如何从条形码号码中查找有关图书的数据?

我正在构build世界上最简单的图书馆应用程序。 我所要做的就是扫描一本书的UPC(条形码),使用一个典型的扫描仪(只是将条形码的数字input到一个字段中),然后用它来查找关于该书的数据。最小,标题,作者,出版年份,以及杜威十进制或国会图书馆目录编号。

目标是打印一张贴有图书目录号码的小贴纸(“脊柱标签”),然后我可以在公司图书馆的货架上用卡片目录号对图书进行分类。 这样,相似主题的书籍往往会彼此靠近,例如,如果你知道你正在寻找一本关于会计的书,你所要做的就是find一些关于会计的书,你会看到另外一半我们有它旁边的,这使浏览图书馆的方便。

似乎有很多的networkingAPI来做到这一点,包括亚马逊和国会图书馆。 但是这些对我来说都是非常混乱的。 我真正想要的是一个单一的高级function,需要一个UPC条形码号码,并返回有关本书的一些基本数据。

在ISBNDB.com上有一个非常简单的基于Web的解决scheme,你可能想看看。

编辑:更新的API文档链接,现在也有版本2可用

http://isbndb.com/api/v1/docs

http://isbndb.com/api/v2/docs

您可以在几分钟内启动并运行(这些示例来自API v1):

  • 在网站上注册并获得使用API​​的密钥
  • 尝试一个URL如下:

    http://isbndb.com/api/books.xml?access_key= {yourkey} &index1=isbn&results=details&value1=9780143038092

结果=详细信息将获得更多详细信息,包括卡片目录号码。

另外,通常条形码是isbn10或isbn13中的一个。 如果您使用的是扫描仪,您只需要删除最后5个数字,然后选取18个数字即可。

以下是一个示例回应:

 <ISBNdb server_time="2008-09-21T00:08:57Z"> <BookList total_results="1" page_size="10" page_number="1" shown_results="1"> <BookData book_id="the_joy_luck_club_a12" isbn="0143038095"> <Title>The Joy Luck Club</Title> <TitleLong/> <AuthorsText>Amy Tan, </AuthorsText> <PublisherText publisher_id="penguin_non_classics">Penguin (Non-Classics)</PublisherText> <Details dewey_decimal="813.54" physical_description_text="288 pages" language="" edition_info="Paperback; 2006-09-21" dewey_decimal_normalized="813.54" lcc_number="" change_time="2006-12-11T06:26:55Z" price_time="2008-09-20T23:51:33Z"/> </BookData> </BookList> </ISBNdb> 

注:我是LibraryThing的家伙,所以这是部分自我推销。

看看这个StackOverflow答案 ,其中涵盖了一些好的方法来获取给定的ISBN数据。

对你的问题,亚马逊包括一个简单的DDC(杜威); Google没有。 WorldCat API可以,但是您需要成为OCLC库才能使用它。

ISBN / UPC的问题很复杂。 更喜欢ISBN,如果你能find它们。 大众平装书有时会在外面玩UPC,在里面还会有一个ISBN。

LibraryThing成员在这个问题上已经写了几页文字,并努力绘制这两个图表:

如果您从边界购买,您的图书的条形码将全部使用自己的内部条形码(称为“BINC”)。 最令人讨厌的是,随着时间的推移,他们使用的任何胶水越来越难以清除干净。 我知道没有转换它们的API。 LibraryThing通过屏幕抓取完成。

对于一个API,我会去亚马逊。 LibraryThing是一个很好的非API选项,通过查看其他版本的“工作”来parsingBINCs并为没有它们的书添加DDC和LCC。

缺less的是标签部分。 有人需要为此创build一个好的PDF模板。

编辑这将是非常容易的,如果你有国际标准书号。 但是从UPC转换为ISBN并不像您想的那样容易。

这里有一些来自http://isbn.nu的; JavaScript代码,它在脚本中完成

 if (indexisbn.indexOf("978") == 0) { isbn = isbn.substr(3,9); var xsum = 0; var add = 0; var i = 0; for (i = 0; i < 9; i++) { add = isbn.substr(i,1); xsum += (10 - i) * add; } xsum %= 11; xsum = 11 - xsum; if (xsum == 10) { xsum = "X"; } if (xsum == 11) { xsum = "0"; } isbn += xsum; } 

但是,这只是从UPC转换到一些时间的国际标准书号。

您也可以查看条码扫描项目页面 – 一个人扫描书籍的过程。

所以你知道amazon web services 。 但是,假设亚马逊有这本书,并在UPC扫描。

你也可以尝试UPCdatabase在http://www.upcdatabase.com/item/ {UPC},但这也是不完整的 – 至less它正在增长..

到目前为止,UPCs的会议数据库库还不完整,但是很难实现自动化。

目前,您似乎必须亲自编写此代码才能进行高级查找,以返回简单的信息(并尝试每个服务)

听起来就像一个小软件公司为你做的那种工作…

更严重的是,有一些服务可以提供一个到www.literarymarketplace.com的ISBN目录的接口。

在worldcat.com上,您可以使用ISBN创build一个URL ,直接进入图书详细信息页面。 该页面不是非常有用,因为它仍然是HTML抓取获取数据,但他们有一个链接,以一对夫妇“标准”格式下载图书数据。

例如,他们的模拟书: http : //www.worldcat.org/isbn/9780060817084有一个“EndNote”格式的下载链接http://www.worldcat.org/oclc/123348009?page=endnote&client=worldcat.org-详细logging ,您可以很容易地从该文件中收集数据。 这是从他们自己的OCLC号码,而不是国际标准书号,但转换不难,而他们可能有一个很好的界面来做到这一点。

我的图书pipe理员的妻子使用http://www.worldcat.org/ ,但他们关键的国际标准书号。 如果你可以扫描,你是金。 看几本书,看起来UPC和ISBN是一样的还是相关的。

哦, 这些人有从UPC到ISBN的转换function。

使用网站Library Thing ,您可以扫描条形码(整个条形码,不仅仅是ISBN – 如果您有扫描“楔形”,您很幸运)并build立您的图书馆。 (这是一个优秀的社交networking – 认为书籍爱好者的StackOverflow。)

然后,使用TOOLS部分,您可以导出您的库。 现在你有一个文本文件来导入/parsing,并可以创build你的标签,卡片目录等

恐怕问题是数据库访问。 公司支付分配的UPC,所以数据库不能自由访问。 Philip提到的UPCdatabase网站和UPCData.info一样是一个开始,但是它们是用户input的 – 这意味着不完整,可能不准确。

你总是可以进入到UPC的谷歌,并得到一击,但这不是很自动化。 但是大部分时间都是这样。

我以为我记得乔恩·乌德尔(Jon Udell)正在做这样的事情(例如, 看到这个 ),但它完全是基于ISBN的。

看起来你已经find了一个新的项目让别人来工作!

如果你想使用亚马逊,你可以用LINQ to Amazon轻松实现。

在图书馆的世界里工作,我们只需连接到条形码中的LMS通行证,然后嘿嘿嘿嘿地收回数据。 我相信有一些免费的LMS提供商 – 谷歌为“开源lms”。

注意:这可能不适用于ISBN …

您可以在Dawson Interactivefind一个PHP实现的ISBN查找工具。

outpan.com怎么样? 通过网站和API访问的2000万册图书完全免费。 最适合ISBN-13

我经常推荐使用亚马逊的产品联盟API (请查看https://affiliate-program.amazon.com ),但也有其他一些选项。

如果您想保证数据的准确性,您可以使用付费解决scheme。 GS1是发布UPC代码的组织,所以其信息应该始终准确( https://www.gs1us.org/tools/gs1-company-database-gepir )。

还有一些第三方数据库与相关的信息,如https://www.upccodesearch.com/或https://www.upcdatabase.com/

在事实发生近5年之后,没有任何事情能够回答这个问题,但是这里还有一些有价值的便士。

目前我正在做一些能够很好地完成这项工作的东西… https://blinked.in – 快速成为最大的UPC / EAN13条形码数据库(在上个星期我们已经添加了超过7M的条形码),虽然我们仍处于alpha开发阶段,但我们正在引入一个非常简单,低成本的API来提供这种数据访问。

我们刚刚开发了几个月,但已经有一个稳定的networking平台,快速扩大的数据库,并希望保持简单。

希望这可以帮助你,或某些未来的读者,在某种程度上。

更新

我们的API现在正在运行 – https://blinked.in/api – 我们每天都会有100个免费电话,而且您可以通过帮助我们发现新的条形码获得功劳 – https://blinked.in/bandwidthaccount