Open Library OPDS 

I’ve started adding OPDS/BookServer support to Open Library, starting with OL Edition records. OPDS is an Atom-based specification for distribution of ebook metadata. You can read more at http://opds-spec.org.

For each edition record in OL, you can add “.odps” to the end of the edition key to retrieve the OPDS version. For example the OPDS entry forĀ this edition of Peter Rabbit can be retrieved from

http://openlibrary.org/books/OL2102420M.opds

OPDS provides a good way of programmatically extracting and harvesting OL edition data. Currently, the OPDS record contains more metadata than the JSON version of an edition record, which makes it easy to grab author and subject data without multiple requests.

For example, to get an author name for an OL edition using JSON, you would first have to get the edition’s JSON record, find the work key, then request the work’s JSON record, then find the author key, then request the author’s JSON record, and then you would be able find the author name. The OPDS entry for an edition will contain Work-level data, so you can avoid jumping through hoops.

Also, for edition records added before Works were introduced in OL, the JSON edition record sometimes shows author and subject data which is old and sometimes incorrect!

We are still discussing how to support external identifiers, indirect acquisition, and DAISY links with the ODPS community, so the format of the OPDS record might change slightly in the future.

The template for the OPDS XML is at the end of this very long url:

https://github.com/openlibrary/openlibrary/blob/master/openlibrary/plugins/upstream/templates/type/edition/opds.html

This is the first step in closing this bug that Matt filed two years ago.. Poor Matt!