Learn about our RFC process, Open RFC meetings & more.Join in the discussion! »

node-isbn

1.6.0 • Public • Published

node-isbn

A simple node.js module that resolves books by ISBN using multiple services:

Installation

$ npm install node-isbn

Supports Node.js versions 6.x and greater.

Examples

Using a callback

var isbn = require('node-isbn');
 
isbn.resolve('0735619670', function (err, book) {
    if (err) {
        console.log('Book not found', err);
    } else {
        console.log('Book found %j', book);
    }
});

Setting a timeout

var isbn = require('node-isbn');
 
isbn.resolve('0735619670', { timeout: 15000 }, function (err, book) {
    if (err) {
        console.log('Book not found', err);
    } else {
        console.log('Book found %j', book);
    }
});

Using a promise

var isbn = require('node-isbn');
 
isbn.resolve('0735619670').then(function (book) {
    console.log('Book found %j', book);
}).catch(function (err) {
    console.log('Book not found', err);
});

Response

Response follows the same schema, but some fields could depend on the service that was used to find the book. In general, Google Books API returns more information.

{
    "title": "Code Complete",
    "authors": [
        "Steve McConnell"
    ],
    "publisher": "O'Reilly Media, Inc.",
    "publishedDate": "2004",
    "description": "Features the best practices in the art and...",
    "industryIdentifiers": [
        {
            "type": "OTHER",
            "identifier": "UCSC:32106018687688"
        }
    ],
    "readingModes": {
        "text": false,
        "image": false
    },
    "pageCount": 914,
    "printType": "BOOK",
    "categories": [
        "Computers"
    ],
    "averageRating": 4,
    "ratingsCount": 123,
    "contentVersion": "preview-1.0.0",
    "imageLinks": {
        "smallThumbnail": "http://books.google.com/books/content?id=QnghAQAAIAAJ&printsec=frontcover&img=1&zoom=5&source=gbs_api",
        "thumbnail": "http://books.google.com/books/content?id=QnghAQAAIAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api"
    },
    "language": "en",
    "previewLink": "http://books.google.es/books?id=QnghAQAAIAAJ&dq=isbn:0735619670&hl=&cd=1&source=gbs_api",
    "infoLink": "http://books.google.es/books?id=QnghAQAAIAAJ&dq=isbn:0735619670&hl=&source=gbs_api",
    "canonicalVolumeLink": "http://books.google.es/books/about/Code_Complete.html?hl=&id=QnghAQAAIAAJ"
}

Setting backend providers

You can optionally specify the providers that you want to use, in the order you need them to be invoked.

// This request will search first in the Open Library API and then in the Google Books API
isbn.provider(['openlibrary', 'google'])
    .resolve('0735619670')
    .then(function (book) {
        console.log('Book found %j', book);
    }).catch(function (err) {
        console.log('Book not found', err);
    });
// This request will search ONLY in the Google Books API
isbn.provider(['google'])
    .resolve('0735619670')
    .then(function (book) {
        console.log('Book found %j', book);
    }).catch(function (err) {
        console.log('Book not found', err);
    });

If you do not like using strings to specify the providers, you could grab the providers from isbn.PROVIDER_NAMES constant that the library provides!

// This request will search ONLY in the Google Books API
isbn.provider([isbn.PROVIDER_NAMES.GOOGLE])
    .resolve('0735619670')
    .then(function (book) {
        console.log('Book found %j', book);
    }).catch(function (err) {
        console.log('Book not found', err);
    });

License

AGPL v3.0 LICENSE http://www.gnu.org/licenses/agpl-3.0.html

See also Google Books API Terms of Service, Open Library Licensing, WorldCat xISBN Terms of Service, ISBNdb Terms and Conditions.

Development

  • Ensure that you using Node 6 or greater.
  • Tests use mocha. Feel free to contribute.
$ npm test

Install

npm i node-isbn

DownloadsWeekly Downloads

103

Version

1.6.0

License

AGPL

Unpacked Size

37.6 kB

Total Files

5

Last publish

Collaborators

  • avatar