この記事は
Okinawa.rb Advent Calendar 2017 2日目の記事です。
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 に含まれていて、
他にも大量にあります。
さて、リクエストの目星が付いたので実行してみましょう。
あれ。取れていませんね。何故だろう。
デバッグのために request を inspect したりして request の URI を取得。
その上参考記事の URI と比較すると、どうやら amazon.com に request を送っているようです。
(ここはエラーの詳細を書きたかったのですが、BANされたので割愛)
ということで marketplace: 'ja' を追加すると amazon.co.jp にリクエストを送るようになりました。
これで無料の Kindle 本を取得できました。
まとめ
amazon-ecs を使って無料の Kindle 本を集めることができました。
私はやってないのですが、これを購入する部分まで書くと素敵なことになりそうですね。
ということで Okinawa.rb Advent Calendar 2日目の記事でした。
なお、クリスマスプレゼントは
こちらで募集しています。
明日の担当は
@_atton さんです。というか私です。そして3日目の記事は
こちら。
環境
- 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
参考