ruby-amazon でのリストマニア検索
ruby-amazonを使って,CDのリストマニア(listmania)を検索し表示してみる.3人のリストマニアのおすすめ商品10点づつ表示させてみた.使ってみるとruby-amazonは細かなパラメータ指定ができないので,ちょっと不便かも.
ruby-amazon インストール
- http://raa.ruby-lang.org/project/ruby-amazon
- 解凍したruby-amazon-0.9.2 フォルダをC:\に移動
- ruby-console からruby-amazon-0.9.2 フォルダに移動して下記を実行
ruby setup.rb config
ruby setup.rb setup
ruby setup.rb install
- c:/ruby/lib/ruby/site_ruby/1.8/amazon/ フォルダを作成してそこにインストールされた
- rdoc http://www.caliban.org/ruby/ruby-amazon.shtml
コントロール
- dev_token, associate_id はベタにここに書かなくてもいい
def amazon_search_lmania @products = [] @lists = [] @asins_lmania = [] @asin_key = @params[:asin] require 'amazon/search' dev_token = "xxxxxxxxxxxxxx" associate_id = "yyyyyyyyyyyyyyy" locale='jp' req = Amazon::Search::Request.new(dev_token, associate_id, locale) # ListId商品サーチ res = req.asin_search(@asin_key, Amazon::Search::HEAVY) @products = res.products puts @products[0].properties @lists = @products[0].lists if @lists for list_id in @lists sleep 1 puts list_id res = req.listmania_search(list_id, Amazon::Search::LITE) @products = res.products for product in @products @asins_lmania << product.asin end end end render :layout => false end
- Libでエラーが出たので修正した.「 list ID length must be 12 or 13 characters」REST確認すると,14桁なのでLocal=jpでのバグか?
- /ruby/lib/ruby/site-ruby/1.8/amazon/search.rb L747,748 : 13->14
# Return an Amazon::Search::Response of the products on a Listmania list. # If a block is given, that Response's @products will be passed to the # block. # def listmania_search(list_id, weight=HEAVY, &block) url = AWS_PREFIX + "?t=%s&ListManiaSearch=%s&f=xml&type=%s&dev-t=%s" @type = WEIGHT[weight] unless list_id.length.between?(12, 14) raise TermError, "list ID length must be 12 or 14 characters" end search(url % [@id, list_id, @type, @token], &block) end