web-dev-qa-db-ja.com

バーコード番号から書籍に関するデータを検索するにはどうすればよいですか?

私は世界で最も単純なライブラリアプリケーションを構築しています。私ができることは、典型的なスキャナー(フィールドにバーコードの番号を入力するだけ)を使用して本のUPC(バーコード)をスキャンし、それを使用して検索することです本に関するデータ...少なくとも、タイトル、著者、出版年、およびデューイ十進数または米国議会図書館のカタログ番号。

目標は、本の背に貼り付けることができるカードカタログ番号の小さなステッカー(「背骨ラベル」)を印刷し、会社の図書館の棚にある本をカードカタログ番号で並べ替えることです。そうすれば、似たようなテーマの本は互いに近くにある傾向があります。たとえば、会計に関する本を探していることがわかっている場合、必要なことは、会計に関する本をいくつか見つけるだけで、残りの半ダースが表示されますすぐ隣にあるため、ライブラリを閲覧するのに便利です。

Amazonや米国議会図書館など、これを行うためのWeb APIがたくさんあるようです。しかし、それらはすべて私にとって非常に混乱しています。私が本当に欲しいのは、UPCバーコード番号を取り、本に関する基本的なデータを返す単一の高レベル関数です。

70
Joel Spolsky

ISBNDB.comには、Webベースの非常に簡単なソリューションがありますので、ご覧ください。

編集:APIドキュメントのリンクを更新し、バージョン2も利用可能になりました

価格とティアへのリンクはこちら

わずか数分で起動して実行できます(これらの例はAPI v1からのものです)。

  • サイトに登録し、APIを使用するためのキーを取得します
  • 次のようなURLを試してください。

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

Results = detailsは、カードカタログ番号などの追加の詳細を取得します。

余談ですが、一般的にバーコードはisbn10またはisbn13のisbnです。スキャナーを使用していて18個の番号を選択した場合は、最後の5個の番号を削除するだけです。

応答の例を次に示します。

<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>
61
curtisk

注:私はLibraryThingの男なので、これは部分的な自己宣伝です。

このStackOverflowの答え を見てください。これは、特定のISBNのデータを取得するいくつかの良い方法をカバーしています。

あなたの問題に、AmazonにはシンプルなDDC(Dewey)が含まれています。 Googleはしません。 WorldCat APIはサポートしていますが、使用するにはOCLCライブラリである必要があります。

ISBN/UPCの問題は複雑です。見つけられる場合は、ISBNを優先してください。マスマーケットのペーパーバックでは、外側がUPCで内側がISBNであることがあります。

LibraryThingのメンバーは、この問題に関する2つのページと、2つのマップを作成する取り組みについて開発しました。

Bordersから購入する場合、書籍のバーコードはすべて独自の内部バーコード(「BINC」と呼ばれます)で貼り付けられます。最も面倒なことに、使用する接着剤は、時間の経過とともにきれいに除去するのがますます難しくなります。それらを変換するAPIはありません。 LibraryThingはスクリーンスクレイピングによってそれを行います。

APIについては、Amazonに行きます。 LibraryThingは、API以外の優れたオプションであり、BINCを解決し、「著作物」の他のエディションを見て、それらを持たない本のDDCとLCCを追加します。

欠けているのはラベル部分です。誰かがそのための良いPDFテンプレートを作成する必要があります。

16
Tim Spalding

EditISBNがあれば簡単です。ただし、UPC=からISBNへの変換は簡単ではありません。

http://isbn.n からの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=からISBNsome)にのみ変換します。

バーコードスキャンプロジェクトページ もご覧ください。一人の人が本をスキャンするまでの道のりです。

Amazon Web Services について知っています。しかし、それはAmazonが本を持ち、UPCでスキャンしたことを前提としています。

http://www.upcdatabase.com/item/ {UPC}で PCdatabase を試すこともできますが、これも不完全です-少なくとも成長しています。

議会データベースのライブラリも、これまでのUPCでは不完全であり(かなり包括的なものですが)、自動化するのがより困難です。

現在、単純な情報を返す(および各サービスを試行する)高レベルのルックアップを行うには、これを自分で記述する必要があるようです。

8
Philip Rieck

ある種の仕事のように聞こえますが、小さなソフトウェア会社があなたのためにやってもらえるかもしれません...

さらに深刻なのは、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 を使用すると、そのファイルからデータを簡単に収集できます。これは、ISBNではなく、独自のOCLC番号からリンクされていますが、変換するのは難しいことではなく、それを実行するための優れたインターフェイスをまだ持っている可能性があります。

3
davenpcj

私の司書の妻は http://www.worldcat.org/ を使用しますが、ISBNをキーオフします。それをスキャンできれば、黄金色です。数冊の本を見ると、UPCはISBNと同じか、関連しています。

ああ、 これらの人 は、UPCからISBNへの変換を行うための機能を持っています。

2
sblundy

Webサイト Library Thing を使用して、バーコード(ISBNだけでなくバーコード全体-スキャン「ウェッジ」があれば幸運です)をスキャンしてライブラリを構築できます。 (優れたソーシャルネットワークです-本愛好家のためのStackOverflowを考えてください。)

次に、TOOLSセクションを使用して、ライブラリをエクスポートできます。これで、インポート/解析するテキストファイルが作成され、ラベル、カードカタログなどを作成できます。

1
Doug L.

Amazonを使用する場合は、 LINQ to Amazon を使用して簡単に実装できます。

1
Simon_Weaver

私は問題がデータベースへのアクセスだと思う。企業はUPC=が割り当てられているため、データベースに自由にアクセスできません。Philipが言及した PCdatabase サイトは、そのままです PCData .info ですが、ユーザーが入力したものです。つまり、不完全で不正確かもしれません。

いつでもGoogleにUPCを入力してヒットを取得できますが、それはあまり自動化されていません。しかし、ほとんどの場合正しく実行されます。

Jon Udellがこのようなことを行ったことを思い出したと思いました(例: see this )が、それは純粋にISBNベースでした。

誰かが作業するための新しいプロジェクトを見つけたようです!

1
JohnMeyers

ライブラリの世界で作業する場合、バーコードのLMSパスに接続するだけで、データが戻ってきます。無料のLMSプロバイダーは数多くあると思います-「オープンソースlm」のGoogle。

注:これはおそらくISBNで機能します...

0
Matt B

私は頻繁にAmazonのProduct Affiliate 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/ などの関連情報を含む多数のサードパーティデータベースもあります。

0
mosca1337

PHP実装されたISBNルックアップツールを Dawson Interactive で見つけることができます。

0
cheekygeek