Package: openlibrary-client
openlibrary-clientA reference client library for the Open Library API. Tested with Python 3.7, 3.8.InstallationConfigurationUsageTestingOther Client LibrariesInstallationIf you plan on doing MARC parsing, you'll needyaz(see:https://github.com/indexdata/yaz). Assuming Ubuntu/debian, you can installyazvia apt:$ sudo apt install yazFor Fedora/RHEL, use the following command to installyaz$ sudo dnf install yazYou'll also need python dev tools:$ sudo apt install python3-devFor Fedora/RHEL, use:$ sudo dnf install python3-develTo install the openlibrary-client package:$ git clone https://github.com/internetarchive/openlibrary-client.git
$ cd openlibrary-client
$ pip install .ConfigurationMany Open Library actions (like creating Works and Editions) require authentication, i.e. certain requests must be provided a valid cookie of a user which has been logged in with their openlibrary account credentials.  The openlibrary-client can be configured to "remember you" so you don't have to provide credentials with each request.First time users may run the following command to enable the "remember me" feature. This process will ask for anArchive.org email and password, will authenticate the credentials, and then store the account's corresponding s3 keys in~/.config/ol.ini(or whichever config location the user has specified):$ ol --configure --email mek@archive.org
password: ***********
Successfully configuredUsagePython LibraryFor more examples, you can take a look at ourexamples directoryon Python Scripts for specific use cases that are needed.Adding a new BookFun things you can do to add a new book to Open Library>>>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')WorksFun things you can do with an Work:>>>fromolclient.openlibraryimportOpenLibrary>>>ol=OpenLibrary()>>>work=ol.Work.get(u'OL12938932W')>>>editions=work.editionsOne thing to consider in the snippet above is that work.editions is a @property which makes several http requests to OpenLibrary in order to populate results. Once a call has been made to work.editions, its editions are saved/cached as work.editions.EditionsFun things you can do with an Edition:>>>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')AuthorsAuthor Information for existing authors can be done in the following manner.>>>fromolclient.openlibraryimportOpenLibrary>>>ol=OpenLibrary()>>>author_olid=ol.Author.get_olid_by_name('Dan Brown')>>>author_obj=ol.get(author_olid)Command Line ToolInstalling the openlibrary-client library will also install theolcommand line utility. Right now it does exactly nothing.$ 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 passwordYou can create a new work from the command line using the following syntax. It's almost identical to the olclient.common.Book object construction, except instead of providing an Author object, you instead pass a key for "author" and a corresponding value:> 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"}'
OL26194598MSuccessful creation of a new Work results in the return of its Open Library edition ID.TestingTo run test cases (from the openlibrary-client directory):$ pytestOther Client LibrariesOther Open Library client libraries include:Ruby:https://github.com/jayfajardo/openlibraryJavascript:https://github.com/onaclovtech/openlibraryPython:https://github.com/felipeborges/python-openlibraryandhttps://github.com/the-metalgamer/python-openlibrary-clientPHP:https://github.com/beezus/openlibrary-php