Yummly API的Python库:https://developer.yummly.com

yumml的Python项目详细描述


versionlicense

用于Yummly API

的python库

注意:此库及其作者与Yummly无关。

安装

pip install yummly

依赖关系

  • 请求>;=1.1.0

用法

使用yummly.Client创建一个客户端对象以与美味api交互。

客户端接受api_idapi_keytimeout作为初始参数:

fromyummlyimportClient# default option valuesTIMEOUT=5.0RETRIES=0client=Client(api_id=YOUR_API_ID,api_key=YOUR_API_KEY,timeout=TIMEOUT,retries=RETRIES)search=client.search('green eggs and ham')match=search.matches[0]recipe=client.recipe(match.id)

搜索食谱

API终结点:^{TT5}$

搜索符合特定条件的食谱:

results=yummly.search('bacon')print('Total Matches:',results.totalMatchCount)formatchinresults.matches:print('Recipe ID:',match.id)print('Recipe:',match.recipeName)print('Rating:',match.rating)print('Total Time (mins):',match.totalTimeInSeconds/60.0)print('----------------------------------------------------')
<>将你的结果限制在最大值:

# return the first 10 resultsresults=yummly.search('chicken marsala',maxResults=10)

偏移分页结果:

# return 2nd page of resultsresults=yummly.search('pulled pork',maxResults=10,start=10)

提供搜索参数:

params={'q':'pork chops','start':0,'maxResult':40,'requirePicutres':True,'allowedIngredient[]':['salt','pepper'],'excludedIngredient[]':['cumin','paprika'],'maxTotalTimeInSeconds':3600,'facetField[]':['ingredient','diet'],'flavor.meaty.min':0.5,'flavor.meaty.max':1,'flavor.sweet.min':0,'flavor.sweet.max':0.5,'nutrition.FAT.min':0,'nutrition.FAT.max':15}results=yummly.search(**params)

有关支持的搜索参数的完整列表,请参见部分搜索配方调用位于:https://developer.yummly.com/intro

搜索响应示例:https://developer.yummly.com/wiki/search-recipes-response-sample

获取配方

API终结点:^{TT6}$

按配方ID获取配方:

recipe=yummly.recipe(recipe_id)print('Recipe ID:',recipe.id)print('Recipe:',recipe.name)print('Rating:',recipe.rating)print('Total Time:',recipe.totalTime)print('Yields:',recipe.yields)print('Ingredients:')foringredinrecipe.ingredientLines:print(ingred)

配方响应示例:https://developer.yummly.com/wiki/get-recipe-response-sample

注意:yummly的get recipe响应包含作为字段名的yield。但是,yield是python中的一个关键字,因此它被重命名为yields

搜索元数据

API终结点:^{TT10}$

yummly提供了一个元数据端点,该端点返回允许/排除的成分、饮食、过敏和其他搜索参数的可能值:

METADATA_KEYS=['ingredient','holiday','diet','allergy','technique','cuisine','course','source','brand','restriction']ingredients=client.metadata('ingredient')diets=client.metadata('diet')sources=client.metadata('source')

注意:yummly的原始api将此数据作为jsonp响应返回,yummly.py解析掉,然后转换为包含相应元数据类实例的list

API模型类

所有底层api模型类都在yummly/models.py中。用于所有模型的基类是一个具有属性样式访问的修改过的dict类(即obj.fooobj['foo']都是有效的访问器方法)。

选择了派生的dict类来适应到json的无痛转换,这是使用yummly.py作为api代理来为应用程序(例如,在服务器上运行yummly.py的web应用程序,而不是直接在前端使用yummly api)提供数据时非常常见的要求。

测试

测试位于tests/。它们可以使用pytest从根目录中使用makefilepytest执行。

# using makefile
make test

# using pytest directly
py.test yummly

注意:运行测试套件将使用真正的api调用,这将计入您的调用限制。目前,在运行测试时会发出22个api调用。

测试配置文件

运行测试需要测试配置文件。使用以下属性创建tests/config.json

{"api_id":"YOUR_API_ID","api_key":"YOUR_API_KEY"}

测试运行时将自动加载此文件。

许可证

这个软件是根据麻省理工学院的许可证授权的。

待办事项

  • 为营养、口味和元数据等复杂的搜索参数提供帮助

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何使用Java中的扫描仪读取文本文件中的特定字符?   java如果我们在hibernate中开始事务但不提交它,会发生什么?   Azure CosmosDB Java Springboot中的无服务器帐户不支持spring boot设置提供吞吐量或容器自动导航   附加到新对象的Java注释?   java如何将自定义文本视图添加到。在Kotlin中添加通知操作   java Shibboleth添加_OpenSAMLcookies,导致HTTP头大小>8k   分布式传感器数据(~40Hz)的高效Java观测器设计   java如何在while循环外声明数组,但在while循环中初始化它?   用@XmlElementRef注释的java元素没有显示在JAXB编组字符串中?   java替换二维数组的值   java如何在任务栏上创建Windows7加载栏   java如何在组件注释bean中使用会话或RequestScope bean?   java netbeans freermarker插件错误:在实现版本中请求netbeans桥的插件Lexer   java谷歌地图方向。加载失败,返回服务器错误   java当我试图递归地计算两个值之间的整数之和时,为什么结果返回一个奇怪的值?   java如何通过html文件的用户获取运行时输入,以使用Jsoup进行解析?