我打算为我的个人藏书集创建一个小型网站。为了使过程自动化一点,我想创建以下功能:
网站会询问我这本书的ISBN号,然后自动获取标题并将其添加到我的数据库中。
虽然我主要对在php中执行此操作感兴趣,但我也有一些Java实现的想法。我相信,如果答案尽可能与语言无关,那么它也会有所帮助。
答案 0 :(得分: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,还有额外的。我们目前不愿意发布代码,但很快就会发布服务。
答案 1 :(得分:13)
结帐ISBN DB API。这是一个简单的基于REST的Web服务。没有亲自尝试过,但朋友已经有了成功的经验。
它会为您提供书名,作者信息,并根据书籍,您可以使用的其他详细信息的数量。
答案 2 :(得分:12)
Google拥有自己的API for Google Books,让您轻松查询Google图书数据库。该协议基于JSON,您可以查看有关它的技术信息here。
您基本上只需要请求以下网址:
https://www.googleapis.com/books/v1/volumes?q=isbn:YOUR_ISBN_HERE
这将以JSON格式返回有关该书的信息。
答案 3 :(得分:11)
我在3周前购买了这个数据库,用于我正在制作的书籍引用应用程序。我没有任何质量问题,几乎找到了我扫描过的任何书。唯一的问题是他们提供CSV文件,我不得不转换2000万行,这花了我差不多一个小时!此外,每月更新不是增量,并且发送的整个数据库对我有用,但可能对其他人有用。
答案 4 :(得分: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主要供程序员使用。该接口通过采用开放标准协议和消息格式,致力于独立于平台和编程语言。
答案 5 :(得分: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(或任何其他语言)中很难再现它。
答案 6 :(得分:1)
要获取给定ISBN号的数据,您需要与isbndb等在线服务进行互动。 书目信息的最佳来源之一是亚马逊网络服务。它为您提供所有书目信息+书籍封面。
答案 7 :(得分:1)
您可能希望查看LibraryThing,它有一个API do what you want,并且可以处理为单个“工作”的不同版本映射多个ISBN的问题。
答案 8 :(得分:0)
作为isbndb的替代品(这似乎是完美答案),我的印象是您可以将ISBN传递到亚马逊产品网址,直接进入该书的亚马逊页面。虽然这不会以编程方式返回书名,但如果您想要从数据库链接到亚马逊用户评论,它可能是一个有用的额外功能。
然而,this link似乎表明我错了。实际上,亚马逊使用的是ASIN号码,虽然这个号码与10位数的ISBN号码相同,但这些号码不再是唯一的类型 - 现在ISBN有13位数字(虽然从旧的10位数类型直接转换)。
但更有用的是,相同的链接确实讨论了可以从ISBN转换为ASIN的Amazon API,并且可能还允许您查找标题和其他信息。它主要针对亚马逊的附属公司,但毫无疑问,如果由于某种原因,它不会发挥作用。
编辑:上面的Tim Spalding指出了一些关于ISBN的实际情况 - 我认为ASIN不再相应,我有点过于悲观。
答案 9 :(得分:0)
您也可以尝试使用此数据库:http://www.usabledatabases.com/database/books-isbn-covers/
与目前在网络上找到的大多数网络服务相比,它拥有更多书籍/ ISBN。但这可能对你的小网站来说太过分了。