Skip to main content

OCLC WorldCat Metadata APIs wrapper

Project description

Build Status Coverage Status PyPI version PyPI - Python Version Code style: black License: MIT

bookops-worldcat

Early ALPHA version

BookOps-Worldcat provides a Python interface for the WorldCat Metadata API. This wrapper simplifies requests to OCLC web services making them ideally more accessible to OCLC member libraries.

Due to major changes introduced by OCLC in May 2020, the version 0.3.0 of the wrapper dropped functionality related to WorldCat Search API. New search endopoints of the Metadata API supported in the 0.3.0 version should fill that gap. While WorldCat Metadata API is our primary focus, we plan in the future to expand wrapper's functionality to other related OCLC web services, including the now dropped Search API.

Installation

Use pip:

$ pip install bookops-worldcat

Documentation

For full documentation please see https://bookops-cat.github.io/bookops-worldcat/

Features

This package takes advantage of the functionality of the popular Requests library. Interactions with OCLC's services are built around 'Requests' sessions. Authorizing a web service session simply requires passing an access token to MetadataSession. Opening a session allows the user to call specific methods to facilitate communication between the user's script/client and particular endpoint of OCLC API service. Many of the hurdles related to making valid requests are hidden under the hood of this package, making it as simple as possible. Please note, not all endpoints of the Metadata API are implemented at the moment. This tool was primarily built for the specific needs of BookOps but we are open to collaboration to expand and improve this package.

At the moment, BookOps-Worldcat supports requests to following OCLC's web services:

  • Authentication via Client Credential Grant
  • Worldcat Metadata API
    • Metadata API Search Functionality
      • member shared print holdings
      • member general holdings
      • searching bibliographic resources:
        • search brief bibs
        • retrieve specific brief bib
        • retrieve other editions related to a specific bibliographic resource
    • Metadata API
      • bibliographic records
        • retrieve full bib
        • find current OCLC number
      • holdings
        • set institution holding for a single resource
        • unset institution holding for a single resource
        • retrieve holding status of a single resource
        • set institution holdings for a batch of resources
        • unset institution holdings for a batch of resouces

Basic usage:

Obtaining access token

>>> from bookops_worldcat import WorldcatAccessToken
>>> token = WorldcatAccessToken(
    key="my_WSkey",
    secret="my_WSsecret",
    scopes="selected_scope",
    principal_id="my_principalID",
    principal_idns="my_principalIDNS",
    agent="my_client"
  )
>>> print(token.token_str)
  "tk_Yebz4BpEp9dAsghA7KpWx6dYD1OZKWBlHjqW"

Metadata API

>>> from bookops_worldcat import MetadataSession
>>> session = MetadataSession(authorization=token)
>>> result = session.get_brief_bib(oclcNumber=1143317889)
>>> print(result)
  <Response [200]>
>>> print(result.json())
{
  "oclcNumber": "1143317889",
  "title": "Blueprint : the evolutionary origins of a good society",
  "creator": "Nicholas A. Christakis",
  "date": "2020",
  "language": "eng",
  "generalFormat": "Book",
  "specificFormat": "PrintBook",
  "edition": "First Little, Brown Spark trade paperback edition.",
  "publisher": "Little, Brown Spark",
  "catalogingInfo": {
    "catalogingAgency": "NYP",
    "transcribingAgency": "NYP"
  }
}

Using a context manager:

with MetadataSession(authorization=token) as session:
    results = session.get_full_bib(1143317889)
    print(results.text)
<?xml version="1.0" encoding="UTF-8"?>
<entry xmlns="http://www.w3.org/2005/Atom">
  <content type="application/xml">
    <response xmlns="http://worldcat.org/rb" mimeType="application/vnd.oclc.marc21+xml">
      <record xmlns="http://www.loc.gov/MARC21/slim">
        <leader>00000cam a2200000 i 4500</leader>
        <controlfield tag="001">on1143317889</controlfield>
        <controlfield tag="003">OCoLC</controlfield>
        <controlfield tag="005">20200328101446.1</controlfield>
        <controlfield tag="008">200305t20202019nyuabf   b    001 0 eng c</controlfield>
        <datafield tag="010" ind1=" " ind2=" ">
          <subfield code="a">  2018957420</subfield>
    </datafield>
        <datafield tag="040" ind1=" " ind2=" ">
          <subfield code="a">NYP</subfield>
          <subfield code="b">eng</subfield>
          <subfield code="e">rda</subfield>
          <subfield code="c">NYP</subfield>
<!--...-->
        <datafield tag="020" ind1=" " ind2=" ">
          <subfield code="a">9780316230049</subfield>
          <subfield code="q">(pbk.)</subfield>
<!--...-->
        <datafield tag="100" ind1="1" ind2=" ">
          <subfield code="a">Christakis, Nicholas A.,</subfield>
          <subfield code="e">author.</subfield>
    </datafield>
        <datafield tag="245" ind1="1" ind2="0">
          <subfield code="a">Blueprint :</subfield>
          <subfield code="b">the evolutionary origins of a good society /</subfield>
          <subfield code="c">Nicholas A. Christakis.</subfield>
    </datafield>
        <datafield tag="250" ind1=" " ind2=" ">
          <subfield code="a">First Little, Brown Spark trade paperback edition.</subfield>
    </datafield>
        <datafield tag="264" ind1=" " ind2="1">
          <subfield code="a">New York, NY :</subfield>
          <subfield code="b">Little, Brown Spark,</subfield>
          <subfield code="c">2020</subfield>
    </datafield>
<!--...-->
  </record>
    </response>
  </content>
  <id>http://worldcat.org/oclc/1143317889</id>
  <link href="http://worldcat.org/oclc/1143317889"></link>
</entry>

Changelog

Consult the Changelog page for fixes and enhancements of each version.

Bugs/Requests

Please use Github issue tracker to submit bugs or request features.

Todo

  • Metadata API:
    • support for local holdings resources endpoints of the search functionality of the Metadata API
    • support for local bibliographic data endpoints
    • support for holdings batch actions for multiple institutions
    • record validation endpoints
    • methods to create and update bibliographic records

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bookops-worldcat-0.4.1.tar.gz (15.7 kB view details)

Uploaded Source

Built Distribution

bookops_worldcat-0.4.1-py3-none-any.whl (17.1 kB view details)

Uploaded Python 3

File details

Details for the file bookops-worldcat-0.4.1.tar.gz.

File metadata

  • Download URL: bookops-worldcat-0.4.1.tar.gz
  • Upload date:
  • Size: 15.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.12 CPython/3.8.7 Windows/10

File hashes

Hashes for bookops-worldcat-0.4.1.tar.gz
Algorithm Hash digest
SHA256 0c2f5032eb25a5b0adcb867078a22db04a8e0ab4302f7a52c694e029a166192d
MD5 f21f3180b29b0e21c965ce2e70346ff7
BLAKE2b-256 4b1804a0198b4b1f8d7c01c02b207ec1ecc77cc2e2c428b980ca439703fadfe7

See more details on using hashes here.

File details

Details for the file bookops_worldcat-0.4.1-py3-none-any.whl.

File metadata

File hashes

Hashes for bookops_worldcat-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 53010374c9c94d8bda9866925b3384fc8297a8951414bbe3a4e50b8f961ed490
MD5 91061d7216e5091931befe45fa3bb4b1
BLAKE2b-256 456d7c672fcc9cd91f8f67bdb1f70f990fe764395b145f4ff3fea2ec2a288625

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page