1日目は @hanachin さんの「Rubyで国民健康保険料を計算する」でした。
Amazon は Product Advertising API というものを提供していて、商品を検索したりできます。
利用するためには affiliate.amazon.co.jp への登録が必要です。
加えて、 Advertising API を使うサイトなども申請する必要があります。
ちなみに登録に関してはにはこちらの記事が有用です。
Product Advertising API の token を取得したので、いざ商品検索。
具体的にはこちらを参考にしつつ書き始めましたが、この記事では商品検索リクエスト(item_search)を使っています。
私は検索ではなく「特定の値段以下のKindle本」が欲しいので、send_request で直接リクエストを作ることにしました。
とは言え実行するアクションは「ItemSearch」なので検索に相当します。
なお、 Advertising API は「特定のノード以下の情報を検索」ができます。
browse_node: 2293143051 というマジックナンバーがそれです。
2293143051 は Kindle book store のノードのようです。
Amazon本家のサイトの「Kindle ストア」にカーソルを合わせたりすると URL に含まれていて、他にも大量にあります。
さて、リクエストの目星が付いたので実行してみましょう。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'amazon/ecs' | |
Amazon::Ecs.configure do |options| | |
options[:subscription_id] = options[:AWS_access_key_id] = 'hoge' | |
options[:AWS_secret_key] = 'fuga' | |
options[:associate_tag] = 'piyo' | |
end | |
result = Amazon::Ecs.send_request({response_group: 'Images,ItemAttributes,Large', | |
operation: 'ItemSearch', | |
browse_node: '2293143051', | |
minimum_price: 0, | |
maximum_price: 0, | |
search_index: 'Books'}) |
デバッグのために request を inspect したりして request の URI を取得。
その上参考記事の URI と比較すると、どうやら amazon.com に request を送っているようです。
(ここはエラーの詳細を書きたかったのですが、BANされたので割愛)
ということで marketplace: 'ja' を追加すると amazon.co.jp にリクエストを送るようになりました。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
result = Amazon::Ecs.send_request({response_group: 'Images,ItemAttributes,Large', | |
operation: 'ItemSearch', | |
browse_node: '2293143051', | |
minimum_price: 0, | |
maximum_price: 0, | |
search_index: 'Books' | |
marketplace: 'jp'}) | |
# return items |
まとめ
amazon-ecs を使って無料の Kindle 本を集めることができました。
私はやってないのですが、これを購入する部分まで書くと素敵なことになりそうですね。
ということで Okinawa.rb Advent Calendar 2日目の記事でした。
環境
- OS: Ubuntu 16.04.3 LTS
- ruby: 2.4.2p198 (2017-09-14 revision 59899) [x86_64-darwin16]
- rubygems: 2.6.13
- amazon-ecs: 2.5.0
参考
0 件のコメント:
コメントを投稿