如何从条形码中查找有关书籍的数据?
我正在构建世界上最简单的库应用程序。我想要做的就是使用典型的扫描仪(只需在字段中键入条形码的编号)在书籍的UPC(条形码)中进行扫描,然后使用它来查找有关书籍的数据...最小值,标题,作者,出版年份,以及Dewey十进制或者国会图书馆的目录号。
目的是打印出一个小标签(带有书目编号)的标签("书脊标签"),我可以将其粘贴在书的书脊上,然后我可以通过公司图书馆书架上的书目编号对书进行分类。这样一来,类似主题的书就趋于彼此靠近,例如,如果我们知道要查找一本有关会计的书,那么我们所要做的就是找到一些有关会计的书,而我们会看到另一半紧挨着它,这使浏览图书馆变得很方便。
似乎有很多Web API可以做到这一点,包括Amazon和美国国会图书馆。但是这些都让我非常困惑。我真正想要的是一个单一的高级函数,该函数采用UPC条形码编号并返回有关该书的一些基本数据。
解决方案
编辑如果我们拥有ISBN,这将非常容易。但是从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。
我们可能想看看条形码扫描项目页面,而不是一个人扫描书籍的旅程。
因此,我们了解Amazon Web Services。但这假设亚马逊拥有这本书并且已经在UPC中进行了扫描。
我们也可以在http://www.upcdatabase.com/item/{UPC}上尝试使用UPC数据库,但这至少在不断发展中还是不完整的。
迄今为止,国会数据库库还不具备UPC(尽管它非常全面),并且很难实现自动化。
目前,我们似乎必须自己编写此代码才能进行高级查询,以返回简单的信息(并尝试每个服务)
我的图书管理员妻子使用http://www.worldcat.org/,但他们取消了ISBN。如果我们可以扫描,那将是黄金。看几本书,看起来UPC与ISBN相同或者相关。
哦,这些家伙具有将UPC转换为ISBN的功能。
ISBNDB.com上有一个非常简单的基于Web的解决方案,我们可能想看看。
编辑:更新了API文档链接,现在也有版本2
http://isbndb.com/api/v1/docs
http://isbndb.com/api/v2/docs
我们只需几分钟就可以启动并运行(这些示例来自API v1):
- 在网站上注册并获取使用API的密钥
- 尝试使用以下网址:http://isbndb.com/api/books.xml?access_key =
{yourkey}
&index1 = isbn&results = details&value1 = 9780143038092`
结果=细节将获得其他详细信息,包括卡目录号。
顺便说一句,条形码通常是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)相关联的,但这并不难转换,因此他们可能有一个很好的界面来执行此操作。
使用网站Library Thing,我们可以扫描条形码(如果我们有运气的扫描"楔子",则可以扫描整个条形码,而不仅仅是ISBN)并构建磁带库。 (对于书迷来说,这是一个很棒的社交网络,请使用StackOverflow。)
然后,使用"工具"部分,可以导出库。现在,我们有了一个要导入/解析的文本文件,并且可以创建标签,卡片目录等。
恐怕问题是数据库访问。公司为分配UPC而付费,因此无法免费访问该数据库。 Philip提到的UPCdatabase站点以及UPCData.info都是一个开始,但是它们是用户输入的-这意味着不完整,甚至可能不准确。
我们始终可以在UPC中输入Google并获得成功,但这并不是很自动化。但这确实在大多数情况下是正确的。
我以为我记得乔恩·乌德尔(Jon Udell)做这样的事情(例如,看这个),但这纯粹是基于ISBN的。
我们似乎已经找到了一个新项目供某人进行工作!
注意:我是LibraryThing,所以这是部分自我宣传。
看一下这个StackOverflow答案,它涵盖了获取给定ISBN数据的一些好方法。
对于问题,Amazon包括一个简单的DDC(杜威);谷歌没有。 WorldCat API可以,但是我们必须是OCLC库才能使用它。
ISBN / UPC问题很复杂。如果可以找到,请选择ISBN。大众市场平装书有时在外面带有UPC,而在里面则带有ISBN。
LibraryThing成员已经开发了有关此问题以及将两者映射的努力的几页内容:
- http://www.librarything.com/wiki/index.php/UPC
- http://www.librarything.com/wiki/index.php/CueCat:_ISBNs_and_Barcodes
如果我们是从Borders购买的,则图书的条形码将全部贴有其自己的内部条形码(称为" BINC")。最令人烦恼的是,随着时间的推移,他们使用的胶水越来越难以清除。我不知道可以转换它们的API。 LibraryThing通过抓屏来实现。
对于API,我会选择Amazon。 LibraryThing是一个很好的非API选项,可以通过查看其他版本的"著作"来解析BINC并为没有书的书添加DDC和LCC。
缺少的是标签部分。有人需要为此创建一个好的PDF模板。
如果我们想使用Amazon,则可以使用LINQ to Amazon轻松实现。
在图书馆世界中工作,我们只需要连接条形码中的LMS通道,然后就可以很方便地返回数据了。我相信有许多免费的LMS提供者Google用于"开源lms"。
注意:这可能适用于ISBN ...
我们可以在Dawson Interactive中找到PHP实现的ISBN查找工具。