kelbongoo网站的python包装器
kbg的Python项目详细描述
侏儒
PyKbg是围绕Kelbongoo网站的Python包装器
Kelbongoo是一家位于巴黎东部的公司, 法国它销售来自当地小生产者的产品(主要位于 Picardy),并且是生产者和 消费者(short food supply chain)。
安装
pip3 install kbg
这需要Python≥3.5
用法
使用Kbg
类启动连接:
fromkbgimportKbgk=Kbg(your_email,your_password)print(k.logged_in())# True
一些常规终结点在没有连接的情况下可用:
fromkbgimportUnauthenticatedKbgk=UnauthenticatedKbg()print(k.logged_in())# False
Kbg
Kbg
构造函数接受电子邮件和密码。它引发了一个例外
登录失败
Kbg
拥有所有的端点,UnauthenticatedKbg
还有以下端点:
logged_in()
返回一个布尔值,指示对象是否已成功连接。
get_customer_information()
以dict
的身份获取有关消费者的一些信息,包括第一个和最后一个
姓名、电子邮件、电话、电子邮件设置
get_customer_orders(page=1)
得到所有顾客的订单。这是一个分页端点。它返回一个带orders
键的dict
,以及一个count
、page
和next_page
键,可以用来获取下一页(如果有的话)
get_all_customer_orders(full=False)
交出所有客户的订单。这是一个有用的包装
get_customer_order
。
如果full=True
被传递,则对每个订单调用get_customer_order
,以产生
全部信息
请注意,如果只需要产品的全名,请使用
get_store_offer_dicts
作为查找映射而不是full=True
来保存
不必要的请求。
get_customer_order(order_id)
获取有关特定订单(dict
)的更多信息。
UnauthenticatedKbg
UnauthenticatedKbg
构造函数不接受任何参数。
get_stores()
获取存储列表(list
的dict
)。
get_store_availabilities(store_id)
在当前命令窗口的给定存储区获取产品可用性, 作为产品ID到单位计数的映射。
get_store_offer(store_id, force=False)
在给定的商店(dict
)获得优惠。包括所有产品
以及它们的生产者、类别和系列(子类别)。
注意这个方法是缓存的;使用force=True
来强制api调用。
get_store_offer_dicts(store_id, force=False)
相当于返回查找而不是列表的get_store_offer
项目的。
示例
创建一个简单的连接:
fromkbgimportKbgk=Kbg("your@email.com","yourpassword")
计算您的总支出
total_spent=0fororderink.get_all_customer_orders():forproductinorder["products"]:total_spent+=product["consumer_price"]# get a price in euros rather than centstotal_spent/=100print("You spent a total of %.2f€ at Kelbongoo!"%total_spent)
打印您购买最多的产品
fromcollectionsimportCountermy_store="BOR"top_products=Counter()top_producers=Counter()store_products=k.get_store_offer_dicts(my_store)["products"]fororderink.get_all_customer_orders():forproductinorder["products"]:product_id=product["id"]ifproduct_idinstore_products:product=store_products[product_id]top_products[product["product_name"]]+=1top_producers[product["producer_name"]]+=1print("Top products:")forproduct,nintop_products.most_common(5):print("%3d - %s"%(n,product))print("\nTop producers:")forproducer,nintop_producers.most_common(5):print("%3d - %s"%(n,producer))
查找您的啤酒覆盖范围
my_store="BOR"offer=k.get_store_offer(my_store)# Get the id of the family 'Bières' ("Beers")beer_family_id=Noneforfamilyinoffer["families"]:iffamily["name"]=="Bières":beer_family_id=family["id"]breakelse:raiseException("Can't find the beer family! :(")# Collect all products in that familybeers={}forproductinoffer["products"]:ifproduct["family_id"]==beer_family_id:beers[product["id"]]="%-40s (%s)"%(product["product_name"],product["producer_name"])known_beers=set()# Collect all *bought* products in that familyfororderink.get_all_customer_orders():forproductinorder["products"]:product_id=product["id"]ifproduct_idinbeers:known_beers.add(product_id)print("You have tasted %d beers out of %d."%(len(known_beers),len(beers)))iflen(known_beers)!=len(beers):print("Other beers you might want to try:")forbeer_id,beerinbeers.items():ifbeer_idnotinknown_beers:print("*",beer)
兼容性
这个库使用未记录的api端点,因此它可能随时中断。
注释
不要把kbg(kelbongoo)和KGB混为一谈。
Kelbongoo API使用第一个树字母将存储称为“locale”
在大写中,作为主键:BOR
是borrégo,BIC
是bichat,因为
例子。
价格以欧元美分为单位;你需要把它们除以100才能得到
欧元价格:"consumer_price": 221
意味着它的价格是2.21欧元。
请限制您的请求,以尊重凯尔邦古的服务器。