Handling ISBNs

The Isbn supports SBNs, ISBN-10 and -13. If you’re handling multiple inputs it is easiest to use this class.

class pyisbn.Isbn(isbn)[source]

Initialise a new Isbn object.

Parameters:isbn (str) – ISBN string
calculate_checksum()[source]

Calculate ISBN checksum.

Returns:ISBN checksum value
Return type:str
convert(code='978')[source]

Convert ISBNs between ISBN-10 and ISBN-13.

Parameters:code (str) – ISBN-13 prefix code
Returns:Converted ISBN
Return type:str
to_url(site='amazon', country='us')[source]

Generate a link to an online book site.

Parameters:
  • site (str) – Site to create link to
  • country (str) – Country specific version of site
Returns:

URL on site for book

Return type:

str

Raises:
to_urn()[source]

Generate a RFC 3187 URN.

RFC 3187 is the commonly accepted way to use ISBNs as uniform resource names.

Returns:RFC 3187 compliant URN
Return type:str
validate()[source]

Validate an ISBN value.

Returns:True if ISBN is valid
Return type:bool

Examples

Validate ISBN

>>> book = Isbn('9783540009788')
>>> book.validate()
True
>>> invalid_book = Isbn('0123456654321')
>>> invalid_book.validate()
False

Format ISBN

>>> book.to_urn()
'URN:ISBN:9783540009788'
>>> book.to_url()
'https://www.amazon.com/s?search-alias=stripbooks&field-isbn=9783540009788'
>>> book.to_url('google')
'https://books.google.com/books?vid=isbn:9783540009788'