2016年2月27日土曜日

Rubyで楽天APIを試す

はじめに

Ruby初心者ですが、個人的プロジェクトで勉強がてら使っています。そのプロジェクトで楽天のAPIを使ってBOOKOFFの価格を調べるという必要が出てきたので、ちょっとやってみました。

開発・実行環境

MacBook Pro
OSX El Capitan (10.11.3)

ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin15]

使用したAPI

キーワードと楽天ショップを指定して商品リストを取得するAPI。
楽天商品検索API (version:2014-02-22)

準備

  1. 楽天でアプリケーションIDを取得こちらから。
  2. Rubyのgemが用意されているので、gem install rakuten_web_service

サンプルコード

上記楽天のサイトにRubyのサンプルが載っています。下のコードはサンプルを少しだけいじったものです。楽天のサンプルそのままだと私の環境ではエラーが出たので、
require 'uri'
を追加したところ動作しました。
Item.searchで楽天ショップのshopCodeというのを与えるのですが、BOOK OFFの場合、urlが下記のようになっています。
http://www.rakuten.ne.jp/gold/bookoffonline/
最後の"bookoffonline"の部分がshopCodeのようです。
入れてみたらそれっぽく動きました。

require 'rakuten_web_service'
require 'uri' # 楽天のサンプルに追加

RakutenWebService.configuration do |c|
  c.application_id = 'YOUR_APPLICATION_ID' # 取得したアプリケーションIDで置き換える
  c.affiliate_id = 'YOUR_AFFILIATE_ID' # この行はなくても大丈夫そう。
end

items = RakutenWebService::Ichiba::Item.search(:keyword => 'ゼノブレイド', :shopCode => 'bookoffonline') 
items.each do |item|
  if item['availability'] == 1 #在庫があるか
    #取得したデータを適当に出力
    puts "#{item['itemName']}, #{item.price} yen, #{item['shopName']}, #{item['genreId']}, #{item['itemCode']}" 
    puts "#{item['itemCaption']}"
    puts "#{item['itemUrl']}"
  end
end

おわりに

できればJANコードから検索できるといいのですが、このAPIでは対応していないようです。keywordにJANコードを入れるとBOOKOFF指定では何も結果が得られませんでした。店舗指定なしだと、商品名にJANコードが入っていればヒットします。

0 件のコメント:

コメントを投稿