用于Crossref搜索API的低级客户端
项目描述
habanero
这是一个用于与Crossref的搜索API工作的低级客户端。它被命名为更通用,因为其他组织将采用Crossref的搜索API,使其能够从一个客户端与所有内容进行交互。
其他Crossref API客户端
Ruby: serrano, https://github.com/sckott/serrano
Crossref的API问题跟踪器: https://gitlab.com/crossref/issues
habanero 包含三个模块,您可以根据需要导入(或导入所有)
Crossref - Crossref搜索API。 Crossref 模块包含与Crossref API路由匹配的方法,以及一些用于获取DOI机构和随机DOI的便捷方法
works - /works 路径
members - /members 路径
prefixes - /prefixes 路径
funders - /funders 路径
journals - /journals 路径
types - /types 路径
licenses - /licenses 路径
registration_agency - 获取DOI发行机构
random_dois - 获取随机DOI集合
counts - 引用计数。包括单个 citation_count 方法
cn - 内容协商。包括以下方法
content_negotiation - 获取各种格式的引用
csl_styles - 获取CSL样式,在 content_negotation 方法中使用
WorksContainer - 一个处理Crossref作品的类。将Crossref类方法上的作品输出传递给该类,以便更容易地提取作品的具体字段。
关于搜索的说明
您正在使用描述在 https://api.crossref.org/swagger-ui/index.html 的Crossref搜索API。当您使用查询词进行搜索时,在Crossref服务器上,他们不是搜索全文,甚至不是文章的摘要,而是仅搜索返回给您的数据中可用的内容。也就是说,他们搜索文章标题、作者等。有关此问题的讨论,请参阅 https://gitlab.com/crossref/issues/-/issues/101
速率限制
查看当前速率限制的 X-Rate-Limit-Limit 和 X-Rate-Limit-Interval 标头。
礼貌池
要进入礼貌池,现在最好包括一个 mailto 电子邮件地址。有关更多信息,请参阅文档。
安装
稳定版本
pip (or pip3) install habanero
如果您需要使用内容协商修复bibtex格式的引用,请使用
pip (or pip3) install habanero[bibtex]
开发版本
pip install git+https://github.com/sckott/habanero.git#egg=habanero
或自行本地构建
git clone https://github.com/sckott/habanero.git
cd habanero
make install
用法
初始化客户端
from habanero import Crossref
cr = Crossref()
作品路由
# query
x = cr.works(query = "ecology")
x['message']
x['message']['total-results']
x['message']['items']
# fetch data by DOI
cr.works(ids = '10.1371/journal.pone.0033693')
成员路由
# ids here is the Crossref Member ID; 98 = Hindawi
cr.members(ids = 98, works = True)
引用次数
from habanero import counts
counts.citation_count(doi = "10.1016/j.fbr.2012.01.001")
内容协商 - 获取多种格式的引用
from habanero import cn
cn.content_negotiation(ids = '10.1126/science.169.3946.635')
cn.content_negotiation(ids = '10.1126/science.169.3946.635', format = "citeproc-json")
cn.content_negotiation(ids = "10.1126/science.169.3946.635", format = "rdf-xml")
cn.content_negotiation(ids = "10.1126/science.169.3946.635", format = "text")
cn.content_negotiation(ids = "10.1126/science.169.3946.635", format = "text", style = "apa")
cn.content_negotiation(ids = "10.1126/science.169.3946.635", format = "bibentry")
元数据
变更日志
1.2.6 (2024-02-01)
为vcr标记两个更多测试以创建cassettes(两个内容协商测试)- 没有面向用户的变化 (#114)
habanero现在有条件地使用bibtexparser来回转bibtex,尝试修复任何未正确格式化的bibtex (#144) (#153)
将处理字段查询(如query.publisher-name)的通用方法,允许所有字段查询,以及未来的任何查询 (#150) (#152)
改进了错误处理 (#123)
ids现在是Crossref.prefixes方法中必需的参数;改进了crossef API错误解析 (#116)
1.2.3 (2023-02-02)
现在使用类型提示,在Python 3.6及更高版本上进行了测试;尽管可以与较旧的Python 3版本一起工作。请参阅新的文档以获取有关类型的更多信息 (#70)
修复了使用
的问题;在一个for循环中,内部变量 在每次循环迭代后没有被重置,结果是在抛出警告之后返回的所有对象都是 (#112) (#113)
1.2.2 (2022-05-19)
修复了类WorksContainer以与作品结果的光标输出(例如,cr.works(query, cursor="*"))一起使用 (#106) 感谢 @IvanSterligov
1.2 (2022-03-27)
添加了类WorksContainer以简化作品数据的处理 (#101)
将github开发仓库中的master分支更改为main (#103)
排除测试安装 (#105)
1.0 (2021-11-12)
修复了docs/contributing.rst和habanero的包级别文档 (#89) (#90) 感谢 @Daniel-Mietchen !
修复了request和Request的内部处理限制和偏移 (#91) 感谢 @Bubblbu !
content_negotation现在在4xx/5xx状态码上抛出警告,允许同时处理不良DOI和良好DOI (#92)
为README添加了查询works的DOI的示例 (#93)
当json没有返回时,失败得更好;尝试json.loads并捕获ValueError(JSONDecodeError是ValueError的子类) (#97)
funders、journals、members、prefixes、types和works获得了
参数,以便在找不到DOI时可以选择抛出警告而不是错误 - 找不到DOI且 返回
0.7.4 (2020-05-29)
query.title过滤器已弃用,请使用query.bibliographic代替 (#85)
0.7.2 (2019-12-12)
Crossref()类获得了ua_string选项,可以添加一个字符串到每个请求中发送的用户代理 (#84)
0.7.0 (2019-11-08)
filter_names()和filter_details()已更改,以获取作品、成员和资助者的元数据;并添加了成员和资助者方法的示例,以使用过滤器 (#67)
修复了许多错误 (#80) 感谢 @Radcliffe !
现在在获取作品路由数据时,可以使用进度条功能,仅在执行深度分页时,请参阅进度条参数(#77)(#82)
内容协商修复:现在必须提供ids参数(没有默认值),并且必须是一个字符串或字符串列表(#83)
不再在Python 2下进行测试
0.6.2 (2018-10-22)
从pypi发行版中缺少变更日志,现已修复(#71)
修复了Crossref.registration_agency()方法,上一个更改中损坏了它(#72)
为content_negotiation()方法中的响应文本设置UTF-8编码以修复编码问题(#73)
修复了Crossref.filter_names()方法;不再对dict_keys进行排序(#76)
0.6.0 (2017-10-20)
添加了对额外Crossref搜索过滤器的验证和文档(#62)
对readthedocs上的文档进行了重大改进(#59)
添加了对mailto的支持(#68)(#63)以及关于礼貌池的相关文档(#66)
添加了对
添加了所有新的/works路由过滤器,并在库内简化了过滤器选项处理(#60)
0.5.0 (2017-07-20)
现在使用vcrpy模拟所有单元测试(#54)
现在可以设置自己的内容协商基本URL(#37)
使用works()的一些字段查询失败,但现在似乎正常工作,这可能是由于Crossref API的修复(#53)
修复了向content_negotiation输入DOI作为Unicode字符串时的样式输入(#57)(#58)感谢@talbertc-usgs
修复了在输入DOI为Unicode字符串时的content_negotiation问题(#56)
0.3.0 (2017-05-21)
为字段查询添加了更多文档,描述了支持字段查询的字段以及如何进行字段查询(#50)
sample参数的最大值是100——这已经有一段时间了,但在Crossref文档中没有更新(#44)
更新了文档,说明facet参数可以是一个字符串查询,也可以是一个布尔值(#49)
记录了/works请求的新10,000个最大值——即对于offset参数——如果您需要比这更多的结果,请使用cursor(请参阅https://github.com/CrossRef/rest-api-doc/blob/master/rest_api.md#deep-paging-with-cursors)(#47)
在文档中添加了有关速率限制、当前值、它们可以更改以及如何在详细curl响应中显示它们的信息(#45)
现在使用https://doi.org作为cn.content_negotiation - 函数获得新的参数url,用于指定内容协商的不同基本URL(#36)
修复了kwargs和修复了kwargs的文档,说明可以传递给kwargs的内容(#41)
修复了传递到filter中的重复名称不工作的问题(#48)
在适当的情况下为cn.content_negotiation引发适当的HTTP错误,感谢@jmaupetit(#55)
0.2.6 (2016-06-24)
修复了cr.works()中存在的问题,即传递的DOI没有向Crossref发出正确的API请求(#40)
为支持/works的所有方法添加了字段查询支持(请参阅https://github.com/CrossRef/rest-api-doc/blob/master/rest_api.md#field-queries)(#38)
0.2.2 (2016-03-09)
修复了一些包含不工作示例的示例代码(#34)
修复了registration_agency()方法中的问题,现在它正常工作了(#35)
从文档中删除了冗余的filter_names和filter_details部分
0.2.0 (2016-02-10)
现在在发送到Crossref的每个HTTP请求中都传递用户代理字符串,包括一个包含X-USER-AGENT头部的头,以防User-Agent字符串丢失(#33)
在文档中添加了免责声明,说明在搜索Crossref API时实际搜索的内容——即API返回的内容,因此不会搜索全文或摘要(#32)
改进了HTTP错误解析——现在传递来自Crossref API的可能有意义的错误消息(#31)
添加了更多测试(#30)
habanero现在支持深度分页的游标。请注意,游标仅适用于对/works路由的请求(#18)
0.1.3 (2015-12-02)
修复了wheel文件,使其能够在python2和python3上安装(#25)
添加了csl_styles方法,用于获取用于内容协商的CSL样式(#27)
为内容协商添加了更多文档(#26)
在文档中记录:除非使用/works,否则忽略sample参数(#24)
在文档中记录:没有ID的资助者不会在/funders路由中显示(#23)
0.1.1 (2015-11-17)
修复readme文件
0.1.0 (2015-11-17)
现在兼容Python 2x和3x
将agency()方法更改为registration_agency()
新增方法citation_count() - 获取DOI的引用次数
新增方法crosscite() - 获取DOI的引用,仅支持简单的文本格式
新增方法random_dois() - 获取一组随机DOI
现在导入xml.dom进行少量XML解析
更改库结构,现在具有模块系统,将主要Crossref搜索API(例如,api.crossref.org)分为模块,包括高级方法(例如,registration_agency)、内容协商和引用次数。
0.0.6 (2015-11-09)
首次pypi发布
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
构建分发
habanero-1.2.6.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b206d49f44f41c2289f0ad731f259a50d4376c747d8ecbb219a73874d45309d4 |
|
MD5 | 3bd04aaa332fc8df718092dff015394e |
|
BLAKE2b-256 | 3d17885ee33738a7ecb29d487ca42043378804d0c47945d24ee040cfaa35beeb |
habanero-1.2.6-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ccc57e7dc9cc1850961b4e6f85fc7749896cba6ddcc06ea15297dbad9af2b62e |
|
MD5 | 221100f7c429e855d27ef5768a0d3878 |
|
BLAKE2b-256 | 183ba24c9533cd2557ebca717e1e2b2a5485982d69dc8b609b2199eae20a6e22 |