如何从ISBN号中获取书名?

时间:2020-03-05 18:46:58  来源:igfitidea点击:

我正计划为我的个人图书收藏创建一个小型网站。为了稍微自动化该过程,我想创建以下功能:

该网站会要求我提供该书的ISBN号,然后会自动获取该书名并将其添加到我的数据库中。

尽管我主要对在php中执行此操作感兴趣,但是我对此也有一些Java实现想法。我认为,如果答案尽可能与语言无关,那也会有所帮助。

解决方案

回答

我还没有尝试过,但是看看isbndb

API Description: Introduction
  
  ISBNdb.com's remote access application programming interface (API) is designed to allow other websites and standalone applications use the vast collection of data collected by ISBNdb.com since 2003. As of this writing, in July 2005, the data includes nearly 1,800,000 books; almost 3,000,000 million library records; close to a million subjects; hundreds of thousands of author and publisher records parsed out of library data; more than 10,000,000 records of actual and historic prices.
  
  Some ideas of how the API can be used include:

- Cataloguing home book collections
- Building and verifying bookstores' inventories
- Empowering forums and online communities with more useful book references
- Automated cross-merchant price lookups over messaging devices or phones

  
  Using the API you can look up information by keywords, by ISBN, by authors or publishers, etc. In most situations the API is fast enough to be used in interactive applications.
  
  The data is heavily cross-linked -- starting at a book you can retrieve information about its authors, then other books of these authors, then their publishers, etc.
  
  The API is primarily intended for use by programmers. The interface strives to be platform and programming language independent by employing open standard protocols and message formats.

回答

要获取给定ISBN号的数据,我们需要与isbndb之类的在线服务进行交互。
书目信息的最佳来源之一是Amazon Web服务。它为我们提供所有书目信息和书籍封面。

回答

查看ISBN DB API。这是一个简单的基于REST的Web服务。我自己还没有尝试过,但是一个朋友已经有过成功的经验。

它会为我们提供书名,作者信息,并根据书提供我们可以使用的其他详细信息的数量。

回答

我们可能需要研究LibraryThing,它具有可以满足我们所需的API,并且它们可以处理诸如为单个"工作"的不同版本映射多个ISBN的事情。

回答

作为isbndb的替代方案(似乎是完美的答案),我的印象是,我们可以将ISBN传递到亚马逊产品URL中,直接进入本书的亚马逊页面。尽管这不会以编程方式返回书名,但如果我们想从数据库链接到Amazon用户评论,它可能是一项有用的额外功能。

但是,此链接似乎表明我错了。实际上,亚马逊使用的是ASIN号,虽然以前与10位ISBN号相同,但这些不再是现在只有13位数字的唯一ISBN号(尽管从旧的10位数字类型可以直接转换) 。

但更有用的是,同一链接确实讨论了可以从ISBN转换为ASIN的Amazon API,并且还可能使我们查找标题和其他信息。它主要针对Amazon会员,但毫无疑问,如果isbndb出于某种原因,它可以完成这项工作。

编辑:上面的Tim Spalding指出了有关ISBN的一些实际事实,我在假设ASIN不再对应之前有点过于悲观。

回答

这是LibraryThing的创始人。我们在这里没有什么可提供的,所以我希望我的评论不会显得自私。

首先,有关Amazon,ASIN和ISBN号的评论在许多方面都是错误的。在几乎每本书都有一个ISBN的情况下,ASIN和ISBN都是相同的。 ISBN现在不是13位数字。相反,ISBN可以是10或者13. 十位ISBN可以表示为以978开头的13位数字,这意味着当前存在的每个ISBN都具有10位和13位数字的形式。有各种各样的库可用于在ISBN10和ISBN13之间转换。基本上,我们将978加到前面,并在末尾重新计算校验和数字。

之所以发明ISBN13,是因为发布商的ISBN用尽了。在不久的将来,当开始使用基于979的ISBN13时,它们将没有等效的ISBN10. 据我所知,目前尚无基于979种ISBN的已出版书籍,但很快就会发行。无论如何,总而言之,就是所有978个ISBN10都使用ISBN10表格。无论如何,无论亚马逊使用的是十位还是十三位的ASIN,我们都可以按任何一种方式搜索Amazon。

就个人而言,我不会将ISBN DB放在列表的顶部。 ISBN DB可以从许多来源进行挖掘,但是它不如Amazon或者Google全面。相反,我将研究包括各种国际亚马逊在内的亚马逊,然后是新的Google Book Data API,然后是OpenLibrary API。对于非英语书籍,还有其他选择,例如,针对俄罗斯书籍的臭氧。

如果我们关心最高质量的数据,或者如果我们在1970年左右之前出版过任何书籍,则可能需要查看Z39.50协议(通常采用MARC格式)中可用的库中的数据,或者使用都柏林核心,使用SRU / SRW协议。对于现代程序员来说,MARC格式是非常奇怪的东西。但是,一旦我们得到它,它也是更好的数据,并且包含有用的字段,例如LCCN,DDC,LCC和LCSH。

LibraryThing运行于一个自制的Python库中,该库可查询约680个库,并将MARC的多种形式转换为与Amazon兼容的XML,以及其他功能。我们目前不愿意发布代码,但可能很快会发布服务。

回答

Google拥有自己的Google图书API,可让我们轻松查询Google Book数据库。该协议基于JSON,我们可以在此处查看有关该协议的技术信息。

实际上,我们只需要请求以下URL即可:

https://www.googleapis.com/books/v1/volumes?q=isbn:YOUR_ISBN_HERE

这将以JSON格式返回有关该书的信息。