Skip to main content

openlibrary-client

A reference client library for the Open Library API

Notes: Tested with Python 2.7, assumed 3.4 compatibility

  • [Installation](#installation)

  • [Usage](#usage)

  • [Configuration](#configuration)

  • [Testing](#testing)

  • [Other Client Libraries](#other-client-libraries)

## Installation

As a prerequisite, openlibrary-client requires libssl-dev for the cryptography used in openssl:

$ sudo apt-get install libssl-dev

If you plan on doing MARC parsing, you’ll need yaz (see: https://github.com/indexdata/yaz). Assuming ubuntu/debian, you can install yaz via apt-get:

$ sudo apt-get install yaz

To install the openlibrary-client package:

$ git clone https://github.com/internetarchive/openlibrary-client.git $ cd openlibrary-client $ pip install .

## Configuration

Many 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 a username and password and save them in ~/.config/ol.ini (or whichever config location the user has specified). In the next version, the password will not be stored; instead the account will be authenticated and the username and resulting cookie (and not the password) will be stored in the config:

$ ol –configure –username mekarpeles password: ******* Successfully configured

## Usage

### Python Library

#### Works

Fun things you can do with an Work:

>>> from olclient.openlibrary import OpenLibrary
>>> ol = OpenLibrary()
>>> work = ol.Work.get(u'OL12938932W')
>>> editions = work.editions

One 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.

#### Editions

Fun things you can do with an Edition:

>>> from olclient.openlibrary import OpenLibrary
>>> 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')

### Command Line Tool

Installing the openlibrary-client library will also install the ol command line utility. Right now it does exactly nothing.

$ ol

~usage: ol [-h] [-v] [–get-work] [–get-book] [–get-olid] [–olid OLID]

[–isbn ISBN] [–title TITLE]

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

--username USERNAME

An OL username for requests which require authentication. You will be prompted discretely for a password

You 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”}’ OL26194598M

Successful creation of a new Work results in the return of its Open Library edition ID.

## Testing

To run test cases (from the openlibrary-client directory):

$ py.test tests/

## Other Client Libraries

Other Open Library client libraries include: - Ruby: https://github.com/jayfajardo/openlibrary - Javascript: https://github.com/onaclovtech/openlibrary - Python: https://github.com/felipeborges/python-openlibrary and https://github.com/the-metalgamer/python-openlibrary-client - PHP: https://github.com/beezus/openlibrary-php

Metadata

Release files for openlibrary-client 0.0.16

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for openlibrary-client 0.0.16
File Size Uploaded
openlibrary-client-0.0.16.tar.gz 19.8 kB Details

Release files / openlibrary-client-0.0.16.tar.gz

Download URL openlibrary-client-0.0.16.tar.gz
Size 19.8 kB
Tags Source
SHA-256 checksum
How to use checksums
b584301a9b4d262541abccaccea27730f93c5a4c65a3d3fb9419cbb9dce7b107
BLAKE2b-256 checksum
How to use checksums
596bd66ea247dfdc6f3389c5c199515edfaa2385406b0afdb33a40a827361bef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

0.0.30

2 release files

0.0.20

1 release file

0.0.17

1 release file

This release

0.0.16 This release

1 release file

0.0.14

1 release file

0.0.13

1 release file

0.0.12

1 release file

0.0.11

1 release file

0.0.1

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page