orcid api上的python包装器

orcid的Python项目详细描述


蟒蛇orcid图片::https://badges.gitter.im/orcid/python orcid.svg
:alt:加入聊天,网址:https://gitter.im/orcid/python orcid
:target:https://gitter.im/orcid/python-orcid?联合技术手册来源=徽章和联合技术手册媒介=徽章和联合技术手册活动=公关徽章和联合技术手册内容=徽章

…图片::https://img.shields.io/travis/orcid/python-orcid.svg?style=flat square
:目标:https://travis ci.org/orcid/python orcid
…图片::https://img.shields.io/covertalls/orcid/python-orcid.svg?style=flat square
:目标:https://coveralls.io/r/orcid/python-orcid?分支=主
…图片::https://img.shields.io/pypi/l/orcid.svg?style=flat square
:目标:https://pypi.python.org/pypi/orcid/
…图片::https://img.shields.io/badge/status-beta-red.svg?style=flat square
:目标:https://pypi.python.org/pypi/orcid/


----


mateusz susik<;mateuszsusik@gmail.com>;


代码块:bash

pip install orcid



notes
--


此自述文件可能有些过时。您可以通过提交拉取请求来提供帮助。

异常处理
----


此库的方法可能会引发客户端或服务器错误。一个错误是
来自已验证的
`requests<;http://docs.python requests.org/en/latest/>;``库的异常。与他们合作的通常方式应该是:

。代码块::python


from requests import requestexception
import orcid
api=orcid.memberapi(key,secret,sandbox=true)
try:
api.add廑record(author orcid,token,'work',
{title':'title',type':'art performance'})
#这里应该处理这个错误。由于异常消息可能
过于泛化,可以通过以下方式获取附加信息:
print(e.response.text)
响应是请求-响应实例。



简介尝试唯一的研究者标识符,以及将研究活动和输出与这些标识符联系起来的透明方法。orcid在跨学科、跨研究领域、跨国界以及与其他标识符系统的合作方面是独一无二的。


orcid提供了一个api(应用程序编程接口),允许您的
系统和应用程序连接到orcid注册表,包括从o读取
和向o写入rcid记录。

有两种类型的api可供开发人员使用。



==


publicapi允许开发人员使用搜索引擎并读取author
记录。要使用它,您需要传递机构的密钥和机密。

令牌来自oauth 3-legged授权。您可以使用
此库(下面的示例)执行授权。

但是,如果用户已连接到orcid并经过身份验证(因此您有一个授权代码),则可以简化此过程:

。代码块::python

import orcid
api=orcid.publicapi(机构密钥,机构密钥,沙盒=true)
token=api.get_token_from_authorization_code(授权代码,
redirect_uri)

特殊情况是执行搜索查询的令牌。此类查询不需要用户身份验证,只需要机构凭据。代码块:python

import orcid
api=orcid.publicapi(机构密钥,机构_ secret,sandbox=true)
search_token=api.get_search_token_from_orcid()

代码块::python

import orcid
api=orcid.publicapi(机构密钥,机构密钥,沙盒=true)
search\u results=api.search('text:english,access\u token=token)



创建搜索查询时,可以使用
中的生成器来减少获取记录所需的时间。

…代码块::python

search_results=api.search_generator('text:english',
pagination=20)
first_result=next(search_results)



代码块::python

import orcid
api=orcid.publicapi(机构密钥,机构密钥,沙盒=true)
search_results=api.search_public('text:english')
pi.read_record_public('0000-0001-1111-1111','activities',
标记)
summary=api.read_record_public('0000-0001-1111-1111','record',
标记)



summary字典中的每个记录都应包含*输入代码*。使用
它们,可以查询特定记录以获取详细信息。需要提供
记录的类型和输入代码。代码块::python

通过在列表中选择多个"放置代码",可以同时获取多个选定的作品。代码块::python

work=api.read_record_public('0000-0001-1111-1111','works',token,
['1111','2222','3333'])


其他实用程序
----

代码块::python

url=api.get_login_url('/authenticate',redirect_uri,email=email)



=OAuth三条腿的授权过程。


成员API允许开发人员在使用
搜索API或获取记录时获取更多信息。

若要创建成员API处理程序的实例,必须提供机构密钥和
机构机密。


…代码块::python

import orcid
api=orcid.memberapi(机构密钥,机构密钥,
sandbox=true)
search\u results=api.search('text:english')
ri,
'/read limited')
summary=api.read_record_member('0000-0001-1111-1111','activities',
token)


成员api中提供了来自公共api的所有方法。

/>
如果作者的orcid未知,则可以通过授权
用户:

代码块::python

orcid=api.get_user_orcid(user_id,password,redirect_uri)



支持。

…代码块::python

put_code=api.add_record(author orcid,token,'work',json)
#将类型更改为"other"
api.update_record(author orcid,token,'work',put code,
{type':'other'})
api.remove_record(author orcid,token,'work',put code)


最后一个参数是记录本身。记录应该遵循orcid的json记录定义。下面是一个可以作为参数传递的字典示例:

…代码块::python

{
"title":{
"title":{
"value":"work"1"
},
"subtitle":null,
"translated title":null
},
"journal title":{
"value":"journal"1"
},
"short description":空,
"type":"日志文章",
"外部id":{
"外部id":[{
"外部id type":"doi",
"外部id value":"ext-id-1",
"外部id url":{
"value":"http://dx.doi.org/ext-id-1"
"},
"外部id关系":"self"
}
}
}



如果您不知道如何构造json,请访问
"orcid swagger<;https://api.orcid.org/v2.0>;`

可以同时更新许多作品!
us``works``请求类型并传递这样的json:

…代码块::python

"bulk":[
{
"work":{
"title":{
"title":{
"value":"work 1"
},
},
"journal title":{
"value":"journal 1"
},
"type":"journal article",
"e外部id"{
"外部id":[{
"外部id type":"doi",
"外部id value":"ext-id-1",
"外部id url":{
"value":"http://dx.doi.org/ext-id-1"
},
"外部id relationship":"self"
"}]
}
}
},
{
"work":{
"title":{
"title":{
"value":"work"2"
},
},
"journal title":{
"value":"journal"2"
},
"type":"journal"article,
"extern"al-id"{
"外部id":[{
"外部id type":"doi",
"外部id value":"ext-id-2",
"外部id url":{
"value":"http://dx.doi.org/ext-id-2"
},
"外部id relationship":"self"
}"
}
}
}
}
]

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

推荐PyPI第三方库


热门话题
与ReentrantLock相比,java ReentrantReadWriteLock的性能非常差   java如何使用Maven Android Studio正确导入?   安卓将ADB添加到我的Java PC应用程序   反射Java getDeclaredConstructor失败,来自JUnit的NoSuchMethodException   JSP上siteedit标记库的java替代   JavaSpring环境概要文件和JPA   java中是否有一个类似于StringBuilder的类,唯一的区别是它具有固定的长度?   JavaMathContext。小数点32 vs MathContext。小数点64,使用哪一个,为什么?   java使用spring在Ibm Websphere MQ中实现重试逻辑   java调用SpriteBatch。开始()和结束()   java有一种从文本中读取文本的方法。文件,并将其设置为pom中的maven属性。xml专家?   java让sitemesh使用struts2   Java Swing:在现有窗口上定位对话框   使用带有MemSql的JPA本机查询的java Select json列