面向开放库的python客户端
openlibrary-client-mek的Python项目详细描述
openlibrary客户端
开放库API的引用客户端库。用python3.7、3.8进行了测试。在
安装
如果你计划做MARC解析,你需要yaz
(参见:https://github.com/indexdata/yaz)。假设是Ubuntu/debian,可以通过apt安装yaz
:
$ sudo apt install yaz
对于Fedora/RHEL,使用以下命令安装yaz
您还需要python开发工具:
$ sudo apt install python3-dev
对于Fedora/RHEL,请使用:
$ sudo dnf install python3-devel
要安装openlibrary客户端软件包,请执行以下操作:
$ git clone https://github.com/internetarchive/openlibrary-client.git
$ cd openlibrary-client
$ pip install .
配置
许多开放库操作(如创建作品和版本)需要身份验证,即某些请求必须提供已使用其openlibrary帐户凭据登录的用户的有效cookie。openlibrary客户机可以配置为“记住您”,这样您就不必为每个请求提供凭据。在
首次使用的用户可以运行以下命令来启用“记住我”功能。此进程将请求存档.org电子邮件和密码将验证凭据,然后将帐户对应的s3密钥存储在~/.config/ol.ini
(或用户指定的任何配置位置):
$ ol --configure --email mek@archive.org
password: ***********
Successfully configured
使用
Python库
对于更多示例,您可以查看我们的examples directoryon Python脚本,以了解所需的特定用例。在
添加新书
你可以做一些有趣的事情来添加一本新书到打开的图书馆
>>>fromolclient.openlibraryimportOpenLibrary>>>importolclient.commonascommon>>>ol=OpenLibrary()>>>book=common.Book(title=u"Warlight: A novel",authors=[common.Author(name=u"Michael Ondaatje")],publisher=u"Deckle Edge",publish_date=u"2018")>>>book.add_id(u'isbn_10',u'0525521194')>>>book.add_id(u'isbn_13',u'978-0525521198')>>>new_book=ol.create_book(book)>>>new_book.add_bookcover('https://images-na.ssl-images-amazon.com/images/I/51kmM%2BvVRJL._SX337_BO1,204,203,200_.jpg')
工作
你可以在工作中做一些有趣的事情:
>>>fromolclient.openlibraryimportOpenLibrary>>>ol=OpenLibrary()>>>work=ol.Work.get(u'OL12938932W')>>>editions=work.editions
在上面的片段中需要考虑的一件事是工作版本是一个@property,它向OpenLibrary发出多个http请求以填充结果。一旦接到电话工作版本,其版本作为工作文件保存/缓存。editions。在
版本
你可以用一个版本做一些有趣的事情:
>>>fromolclient.openlibraryimportOpenLibrary>>>ol=OpenLibrary()>>>edition=ol.Edition.get(u'OL25952968M')>>>authors=edition.authors>>>work=edition.work>>>work.add_bookcover(u'https://covers.openlibrary.org/b/id/7451891-L.jpg')>>>edition.add_bookcover(u'https://covers.openlibrary.org/b/id/7451891-L.jpg')
作者
现有作者的作者信息可以通过以下方式完成。在
>>>fromolclient.openlibraryimportOpenLibrary>>>ol=OpenLibrary()>>>author_olid=ol.Author.get_olid_by_name('Dan Brown')>>>author_obj=ol.get(author_olid)
eh3命令行工具>
安装openlibrary客户机库还将安装ol
命令行实用程序。现在它什么也不做。在
$ ol
usage: ol [-h] [-v] [--configure] [--get-work] [--get-book] [--get-olid]
[--olid OLID] [--isbn ISBN] [--create CREATE] [--title TITLE]
[--baseurl BASEURL] [--email EMAIL]
olclient
optional arguments:
-h, --help show this help message and exit
-v Displays the currently installed version of ol
--configure Configure ol client with credentials
--get-work Get a work by --title, --olid
--get-book Get a book by --isbn, --olid
--get-olid Get an olid by --title or --isbn
--olid OLID Specify an olid as an argument
--isbn ISBN Specify an isbn as an argument
--create CREATE Create a new work from json
--title TITLE Specify a title as an argument
--baseurl BASEURL Which OL backend to use
--email EMAIL An IA email for requests which require authentication.
You will be prompted discretely for a password
可以使用以下语法从命令行创建新工作。它几乎和olclient.common.Book对象构造,除非不提供Author对象,而是传递“Author”的键和相应的值:
> ol --create '{"title": "The Cartoon Guide to Calculus", "publisher": "Teach Yourself", "publish_date": "2013", "identifiers": {"isbn_10": ["144419111X"]}, "cover": "https://images-na.ssl-images-amazon.com/images/I/51aJdEGttLL._SX328_BO1,204,203,200_.jpg", "author": "Hugh Neill"}'
OL26194598M
新作品的成功创建将返回其openlibrary edition ID
测试
要运行测试用例(从openlibrary客户机目录):
$ pytest
其他客户端库
其他开放式库客户端库包括:
- 红宝石:https://github.com/jayfajardo/openlibrary
- Javascript:https://github.com/onaclovtech/openlibrary
- Python:https://github.com/felipeborges/python-openlibrary和{a11}
- 菲律宾比索:https://github.com/beezus/openlibrary-php
- 项目
标签: