我如何从一本书的条形码号码中查找有关它的数据?

我正在构建世界上最简单的库应用程序。我所能做的就是用一个典型的扫描仪扫描一本书的条形码(UPC) ,然后用它来查找关于这本书的数据... ... 最低限度,标题,作者,出版年份,以及杜威十进制或国会图书馆目录编号。

我们的目标是打印出一个小贴纸(“书脊标签”) ,上面有卡片目录编号,我可以把它粘在书脊上,然后我就可以按照公司图书馆书架上的卡片目录编号对书籍进行分类。这样的话,类似主题的书籍就会彼此靠近,比如,如果你知道你在找一本会计方面的书,你只需要找到一些会计方面的书,你就会看到我们旁边的另外六本书,这样你就可以方便地浏览图书馆了。

似乎有很多 web API 可以做到这一点,包括亚马逊和美国国会图书馆。但这些都让我非常困惑。我真正想要的是一个单一的高级函数,它接受 UPC 条形码编号并返回一些关于该书的基本数据。

46153 次浏览

编辑 如果你有国际标准书号的话就很容易了。但是从 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 转换到 ISBN一些的时间。

你可能也想看看 条形码扫描项目页——一个人扫描书籍的过程。

所以你知道 亚马逊网络服务。但这是假设亚马逊有这本书并且已经扫描了 UPC。

您也可以尝试 UPC 数据库http://www.upcdatabase.com/item/{ UPC } ,但这也是不完整的-至少它正在增长。

到目前为止,国会图书馆的数据库对于 UPC 来说也是不完整的(尽管它相当全面) ,而且很难实现自动化。

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

我的图书管理员妻子使用 http://www.worldcat.org/,但他们关键的 ISBN。如果你能扫描它,你就是金子。看几本书,它看起来像 UPC 是相同的或相关的国际标准书号。

哦,这些家伙有一个从 UPC 到 ISBN 的转换函数。

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

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

链接到这里的价格和层次

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

  • 在站点上注册并获得使用 API 的密钥

  • 试试这样的网址:

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

Result = Details 获取包括卡片目录号在内的其他详细信息。

顺便说一句,通常条形码是 isbn10或 isbn13中的 isbn。你只需要删除最后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>

听起来像是一家小型软件公司会为你做的工作。

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

在 worldcat.com 上,你可以通过 使用 ISBN 创建 URL直接进入图书详细页面。这个页面不是很有用,因为它仍然是 HTML 抓取获取数据,但他们有一个链接来下载一对“标准”格式的书籍数据。

例如,他们的演示 http://www.worldcat.org/isbn/9780060817084: 有一个“ EndNote”格式的下载链接 http://www.worldcat.org/oclc/123348009?page=endnote&client=worldcat.org-detailed_record,您可以非常容易地从该文件获取数据。这个链接来自他们自己的 OCLC 号码,而不是 ISBN,但是转换这个号码并不困难,他们可能还有一个很好的接口来做这件事。

使用网站 图书馆的事,你可以扫描你的条形码(整个条形码,不仅仅是 ISBN-如果你有一个扫描“楔子”你很幸运)和建立你的图书馆。(它是一个优秀的社交网络——想想 StackOverflow 对于图书爱好者的帮助吧。)

然后,可以使用 TOOLS 部分导出库。现在您有了一个要导入/解析的文本文件,可以创建标签、卡片目录等等。

恐怕问题在于数据库访问权限。公司需要支付分配 UPC 的费用,因此数据库不能自由访问。Philip 提到的 UPC 数据库站点是一个开始,UPCData.info也是一个开始,但它们是用户输入的——这意味着不完整且可能不准确。

你可以随时输入 UPC 到 Google,然后得到一个匹配结果,但这并不是非常自动化的。但大多数时候都是对的。

我想我记得 Jon Udell 做过类似的事情(例如 看这个) ,但它完全是基于 ISBN 的。

看来你已经找到了一个新的项目,有人工作!

注意: 我是 LibraryThing 人,所以这是部分自我推销。

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

对于你的问题,亚马逊提供了一个简单的 DDC (Dewey) ,而谷歌没有。WorldCat API 可以,但是需要一个 OCLC 库才能使用它。

ISBN/UPC 问题是复杂的。如果你能找到的话,我更喜欢国际标准书号。大众市场上的平装书有时候外面是 UPC,里面是 ISBN。

LibraryThing 的成员就这个问题以及如何努力规划这两个问题编写了几页文章:

如果你从 Borders 买书,你书中的条形码都会贴上他们自己的内部条形码(称为“ BINC”)。最恼人的是,随着时间的推移,他们使用的任何胶水都越来越难以清除干净。据我所知没有 API 能转换它们。LibraryThing 通过屏幕抓取来实现这一点。

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

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

如果你想使用亚马逊,你可以用 LINQ 呼叫亚马逊轻松实现它。

在图书馆世界工作,我们只需连接到 LMS 通行证的条形码和他们迅速回来的数据。我相信有一些免费的 LMS 提供商-谷歌的“开源 LMS”。

注意: 这可能在 ISBN 上工作..。

您可以在 道森互动找到一个 PHP 实现的 ISBN 查找工具。

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

如果你想保证数据的准确性,你可以选择付费的解决方案。GS1是发布 UPC 代码的组织,因此它们的信息应该始终是准确的(https://www.gs1us.org/tools/gs1-company-database-gepir)。

还有一些第三方数据库,其中包含 https://www.upccodesearch.com/https://www.upcdatabase.com/等相关信息。