如何从ISBN号中获取书名? [关闭]

问题描述 投票:28回答:10

我打算为我的个人藏书创建一个小网站。为了使过程自动化一点,我想创建以下功能:

该网站将询问我该书的ISBN号,然后自动获取标题并将其添加到我的数据库。

虽然我主要对在php中这样做感兴趣,但我也有一些Java实现的想法。我相信如果答案尽可能与语言无关,那么它也会有所帮助。

php language-agnostic
10个回答
40
投票

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

首先,关于亚马逊,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的书籍,但它们即将推出。无论如何,它的长短是因为亚马逊使用ISBN10表格来处理所有978个ISBN10。无论如何,无论亚马逊是否使用十位或十三位数的ASIN,您都可以通过任何一种方式搜索亚马逊。

就个人而言,我不会将ISBN DB放在列表的顶部。 ISBN DB从许多来源开采,但它不如亚马逊或谷歌那么全面。相反,我会研究亚马逊 - 包括各种国际亚马逊 - 然后是新的Google Book Data API,之后是OpenLibrary API。对于非英语书籍,还有其他选项,如俄罗斯书籍的臭氧。

如果您关心最高质量的数据,或者如果您在1970年左右之前发布过任何书籍,那么您将需要查看来自库的数据,这些数据可以通过Z39.50协议获得,通常采用MARC格式,或者只有几个库。 Dublin Core,使用SRU / SRW协议。对于现代程序员来说,MARC格式是非常奇怪的东西。但是,一旦你得到它,它也是更好的数据,并包括有用的领域,如LCCN,DDC,LCC和LCSH。

LibraryThing运行一个自制的Python库,可以查询大约680个库,并将MARC的多种风格转换为与Amazon兼容的XML,还有额外的。我们目前不愿意发布代码,但很快就会发布一项服务。


0
投票

您也可以尝试这个数据库:http://www.usabledatabases.com/database/books-isbn-covers/

它比目前在网上找到的大多数网络服务都有更多的书籍/ ISBN。但这可能对你的小网站来说太过分了。


13
投票

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

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


12
投票

Google拥有自己的API for Google Books,让您轻松查询Google图书数据库。该协议是基于JSON的,您可以查看有关它的技术信息here

您基本上只需要请求以下URL:

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

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


11
投票

试试https://gumroad.com/l/RKxO

我在3周前购买了这个数据库,用于我正在制作的书籍引用应用程序。我没有任何质量问题,几乎找到了我扫描过的任何书。唯一的问题是他们提供CSV文件,我不得不转换2000万行,这花了我差不多一个小时!此外,每月更新不是增量,并且发送的整个数据库对我有用,但可能对其他人有用。


6
投票

我没试过,但看看isbndb

API描述:简介

ISBNdb.com的远程访问应用程序编程接口(API)旨在允许其他网站和独立应用程序使用ISBNdb.com自2003年以来收集的大量数据。截至本文撰写时,2005年7月,该数据包括近1,800,000本书;近300亿图书馆记录;接近一百万科目;从库数据中解析出数十万个作者和出版商记录;超过10,000,000条实际和历史价格记录。

关于如何使用API​​的一些想法包括:

- 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

使用API​​,您可以按关键字,ISBN,作者或发布者等查找信息。在大多数情况下,API足够快,可以在交互式应用程序中使用。

这些数据是交叉链接的 - 从一本书开始,您可以检索有关其作者的信息,然后是这些作者的其他书籍,然后是他们的出版商等。

API主要供程序员使用。该接口通过采用开放标准协议和消息格式,致力于独立于平台和编程语言。


2
投票

虽然其他答案是正确的,但这个答案更详细地解释了这个过程。这个使用GOOGLE BOOKS API。

https://giribhatnagar.wordpress.com/2015/07/12/search-for-books-by-their-isbn/

你需要做的就是 1.创建适当的HTTP请求 2.发送并接收包含该书详细信息的JSON对象 3.从收到的信息中提取标题 你得到的回应是JSON。上面网站上给出的代码是针对NODE.js的,但我确信用PHP(或任何其他语言)重现它并不困难。


1
投票

要获取给定ISBN号的数据,您需要与isbndb等在线服务进行交互。书目信息的最佳来源之一是亚马逊网络服务。它为您提供所有书目信息+书籍封面。


1
投票

您可能想要查看LibraryThing,它有一个API,它将do what you want和他们处理诸如为单个“工作”的不同版本映射多个ISBN的事情。


0
投票

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

然而,this link似乎表明我错了。实际上,亚马逊使用的是ASIN号码,虽然这个号码与10位数的ISBN号码相同,但这些号码不再是唯一的类型 - 现在ISBN有13位数字(虽然从旧的10位数类型直接转换)。

但更有用的是,相同的链接确实讨论了可以从ISBN转换为ASIN的Amazon API,并且可能还允许您查找标题和其他信息。它主要针对亚马逊的附属公司,但毫无疑问,如果由于某种原因,它不会发挥作用。

编辑:蒂姆斯伯丁上面指出了一些关于ISBN的实际情况 - 我认为ASIN不再相应,我有点过于悲观。

© www.soinside.com 2019 - 2024. All rights reserved.