Amazon.co.jpの特定商品のランキングを調べるRubyスクリプト(修正あり)
『数学ガール』がアマゾンで予約可能になりました。この機会に「Amazon.co.jpの特定商品のランキングを調べるRubyスクリプト」を書いてみようと思いました。いまから作るのは「ASINのリストを元に、その本のタイトルと現在のランキングを表示する」というスクリプトです。
1. 準備
- アマゾンに関連したgemがきっとあるはずなので探しましょう。
- gem list --remote amazon
- あったのでインストールしましょう。
- gem install amazon-ecs
- まずは説明文を読みましょう。
- ri Amazon::Ecs
2. スクリプト
- your-aws-access-key-idの部分にはあなたのAWSAccessKeyIdを入れてください。
- Windowsのコマンドプロンプトで動かすので結果はcp932で表示します。
- なぜShift_JISにしなかったかというと、チルダの変換でこけるからです。
require 'iconv' require 'amazon/ecs' ASINs = %w[ 4797337990 4797336803 479733679X 4797336781 4797331623 4797332115 4797332123 4797329734 4797327030 4797322977 4797321261 4844319159 4797341378 ] Amazon::Ecs.options = {:AWS_access_key_id => 'your-aws-access-key-id', :country => 'jp'} ASINs.each do |asin| r = Amazon::Ecs::item_lookup(asin, opts = { :response_group => 'Request,Medium' }) if r.error message = r.error else item = r.items[0] message = "#{item.get('title')} => #{item.get('salesrank')}" end puts Iconv.conv('cp932', 'UTF-8', message) end
3. 実行結果
Java言語で学ぶリファクタリング入門 => 13395 新版Perl言語プログラミングレッスン入門編 => 35007 新版C言語プログラミングレッスン 文法編 => 148028 新版C言語プログラミングレッスン 入門編 => 106314 増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編 => 11984 改訂第2版 Java言語プログラミングレッスン (上) => 98512 改訂第2版 Java言語プログラミングレッスン (下) => 60372 プログラマの数学 => 15409 増補改訂版Java言語で学ぶデザインパターン入門 => 1614 暗号技術入門-秘密の国のアリス => 3016 結城浩のPerlクイズ => 110953 結城浩のWiki入門 ~YukiWikiではじめる みんなで作るWebサイト~ => 242921 数学ガール => 390
あらら。せっかく『数学ガール』の売れ行きランキングを調べようと思ったのに、まだAPI経由ではわからないんだ…。ふにゃ。
→『数学ガール』のASINを間違えていたよ(>_<)。上記では修正しました。
それはさておき、『数学ガール』の無料プレゼントの〆切は、明日6月7日(木)です。