面向开放库的python客户端

openlibrary-client-mek的Python项目详细描述


openlibrary客户端

Travis CI build status

开放库API的引用客户端库。用python3.7、3.8进行了测试。在

安装

如果你计划做MARC解析,你需要yaz(参见:https://github.com/indexdata/yaz)。假设是Ubuntu/debian,可以通过apt安装yaz

$ sudo apt install yaz

对于Fedora/RHEL,使用以下命令安装yaz

^{pr2}$

您还需要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

其他客户端库

其他开放式库客户端库包括:

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

推荐PyPI第三方库


热门话题
java如何通过标记名检索多个标记中的元素以进行selenium自动化测试   java iText如何查找最后一行被拆分到下一页   java如何在hudson中的特定jdk上运行Findbugs和PMD?   如何确保java程序与java Environment 6兼容?   对形状进行分组,这样我就可以通过鼠标点击和java处理循环浏览它们   使用生成器映射对象时,java定义无效   maven Java:Struts2和IntelliJ供初学者使用   java子类不继承父类字段   java Android Grid View在Android版本kitkat上崩溃   java Hibernate从缓存返回错误的列表,即使预期的列表与缓存的列表不同   java SendGrid:模板和替换标记   用于普通生产者| Kafka流的java自定义分区器   安卓理解Java内部类中的作用域   无法从Android Studio中的非静态方法调用java非静态方法   比较两个XML响应的JavaXMLUnit   java使用keytool列出密钥   不使用Java客户端库将视频上传到YouTube数据API v3   java My While循环即使在满足条件时也不会结束   自动在外部存储字符串数据,以便以后在Java中使用