2017/12/02

amazon-ecs を使って Kindle マンガの情報を取得する #okinawarb

この記事は 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


参考

0 件のコメント:

コメントを投稿