Ruby/Amazonライブラリ
URL:http://www.caliban.org/ruby/ruby-amazon.shtml
ちょっとAWSを使うプログラムを書こうと思ったので、準備としてRuby/Amazonライブラリを試してみた。
Ruby/Amazonのインストール
- ライブラリのアーカイブをダウンロード
- アーカイブを解凍
- 解凍してできたディレクトリにsetup.rbがあるので、それを使用してインストール
% ruby setup.rb config
% ruby setup.rb setup
% ruby setup.rb install
ISBN/ASINで検索
ソースコード
#! ruby -Ku
require ‘amazon/search’
include Amazon::Search
DEV_TOKEN = “****************”
ASSOCIATE_ID = “ukstudio0c-22”
request = Request.new(DEV_TOKEN, ASSOCIATE_ID, “jp”)
ASIN/ISBNで検索
res = request.asin_search(“4274066428”, LITE) # HEAVYを指定した場合、詳細な情報が得られる
ヒット数
puts res.products.size #=> 1 ASINでの検索なので1件のみ該当
ヒットした製品の情報
puts res.products[0]
実行結果
asin = “4274066428”
authors = [“Dave Thomas”, “Chad Fowler”, “Andy Hunt”, “田和 勝”, “まつもと ゆきひろ”]
availability = “通常24時間以内に発送”
catalog = “Book”
image_url_large = “http://ecx.images-amazon.com/images/I/4151YFZ27NL.jpg"
image_url_medium = “http://ecx.images-amazon.com/images/I/21QGW56WGCL.jpg"
image_url_small = “http://ecx.images-amazon.com/images/I/11V7Q88BZ3L.jpg"
list_price = “¥ 3,990”
manufacturer = “オーム社”
our_price = “¥ 3,990”
product_name = “プログラミングRuby 第2版 言語編”
release_date = “2006/08/26”
url = “http://www.amazon.co.jp/gp/product/4274066428%3ftag=ukstudio0c-22%26link_code=xm2%26camp=2025%26dev-t=0GTT93KAWBX07WMKM002"
used_price = “¥ 3,200”
キーワード検索
ソースコード
Requestオブジェクトを作るところまでは同じなので省略。
res = request.keyword_search(“ruby”, ‘books’, LITE) # booksはモードの指定。musicとか。
ヒット数
puts res.products.size #=> 11/18日現在、10件ヒットした。なんか少ないな・・・
ヒットした製品のタイトルを表示
res.products.each{|item|
puts item.product_name
}
実行結果
The Ruby (ザ・ルビー) 2007年 12月号 [雑誌]
Ruby on Rails入門―優しいRailsの育て方
たのしいRuby 第2版 Rubyではじめる気軽なプログラミング
プログラミングRuby 第2版 言語編
プログラミングRuby 第2版 ライブラリ編
Rubyではじめるゲームプログラミング―人気の国産言語で、誰でも簡単にゲームが作れる! (I/O BOOKS)
基礎Ruby on Rails (IMPRESS KISO SERIES)
Rubyレシピブック 第2版 268の技
はじめよう Ruby on Rails
WEB+DB PRESS Vol.38
追記(07-11-19)
キーワード検索で10件しかヒットしなかったのはkeyword_searchメソッドにALL_PAGESオプションを指定してなかったためでした。キーワードがヒットしなかった場合
検索したキーワードで何もヒットしなかった場合、例外が発生するみたいなので例外処理が必要。
/opt/local/lib/ruby/site_ruby/1.8/amazon/search.rb:1172:in `get_args’: There are no exact matches for the search. (Amazon::Search::Request::SearchError)