2016年2月28日日曜日

楽天APIでJANコードからBOOKOFF価格を取得したい

はじめに

前回、楽天APIでBOOKOFFの価格を取得する方法を試してみました。前回の方法は、

「キーワードとshopCodeから商品リストを取得する」

というものでした。さらにAmazonの値段と比較したいとなると、タイトルをキーワードに与えて検索するだけではAmazonの商品と違うものがヒットする可能性があります。それでJANコードも指定してBOOKOFF価格を取得できないか試してみました。環境やAPIは前回と同じです。

以下、ゲームソフトの場合を試しています。

開発・実行環境

MacBook Pro
OSX El Capitan (10.11.3)
ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin15]

使用したAPI

楽天商品検索API (version:2014-02-22)

BOOKOFF取り扱い商品のJANコード

APIリファレンスを見てもJANコードを指定するようなパラメータは見当たりません。適当にゲームソフトを検索してみるとJANコードは下の画像のように表示されているので情報はあるようです。


そこで、
RakutenWebService::Ichiba::Item.search
の結果を見てみました。itemCaptionの項目が商品説明文なのですが、その中に含まれていました。例えば上のソフトの検索結果のitemCaptionは次のようになっています。

「ニンテンドーDS販売会社/発売会社:スクウェア・エニックス発売年月日:2010/03/04JAN:4988601006392機種:ニンテンドーDS国民的RPG「ドラゴンクエスト」シリーズ9作品目。物語の舞台は「天使界」。世界樹に女神の果実が実るとき、神の国への道が開かれる!それは天使界に伝わる言い伝え。しかし、ある日、恐ろしい事件が発生して・・・!?壮大な世界を冒険するという本来の魅力に加え、キャラクターカスタマイズや転職でき、多彩なキャラクター作りが楽しめます。さらにワイヤレス通信でのマルチプレイ、さまざまなサブストーリーを体験できる「クエスト」など新要素満載の充実した内容となっています。」

思いっきり説明文中にJANと含まれていますね。というわけで、JANコードからBOOKOFF価格を強引に取得する方法として、

  1. タイトルをキーワードにして検索し、商品リストを取得
  2. 商品リストを片っ端から調べ、itemCaption中にJANコードが含まれていたら該当商品とみなし価格を取得
を試したコードが下のもの。前回のコードに、
if caption.include? (jan_code)
の行が追加されています。


require 'rakuten_web_service'require 'uri' # 楽天のサンプルに追加
RakutenWebService.configuration do |c|
  c.application_id = 'YOUR_APPLICATION_ID' # 取得したアプリケーションIDで置き換える  
  c.affiliate_id = 'YOUR_AFFILIATE_ID' # この行はなくても大丈夫そう。
end
jan_code = '4988601006392'items = RakutenWebService::Ichiba::Item.search(:keyword => 'ドラゴンクエストIX', :shopCode => 'bookoffonline')
items.each do |item|
  if item['availability'] == 1 #在庫があるか    
    caption = item['itemCaption']
    if caption.include? (jan_code) # 説明文にjan_codeが含まれているか      
      p item.price.to_i
    end  
  end
end

おわりに

普通にJANコードをキーに検索できても良さそうですし、もしかしたら方法があるのかもしれません。見つかったらまた更新します。

1 件のコメント:

  1. 検索からたどり着きました。 JANコードから商品情報を得たいんですが、なかなか難しそうでしょうか?

    返信削除