endless pulse

どっくんどっくんふるえる毎日を過ごしています

Amazon Product Advertising API を使ってみる(with Scala)

商品について、情報や画像を表示したーいと思うと、Amazon Product Advertising APIがとても便利です。1時間で2000リクエストとアクセス制限はあるものの、欲しい情報はたくさん。
Amazonに載っている画像もAmazon自身が著作権を持っているわけではなく著作者にあります。。そのあたりは詳しくはないので、ひとまずはAmazonの販売促進の規約に則って使用してみます。


昔…4年前ぐらいにAmazonとリンクしたアプリをお手伝いしたとき以来で、すっかり忘れてる。。そのときはしかもPHP。今回はがんばってScalaで! の、おぼえがきです。

Amazon API 使用流れの概要

Amazon APIの仕様どおりにURIを組んでHTTPリクエストして、返ってきたXMLを解析したい。
今回のやりたいことはこれです。(ざっくり)

Amazon APIの仕様って、URLにGETでくっつけるパラメータを云々するわけですが、その中でも「署名」を作るのが一番面倒だった…。

基本的な流れは、以下の参考サイトを確認しました。

昔そのボランティアの開発ように自分のIDとってたんですが、シークレットキー的なのすっかりわかんなくなってしまったので、新たに取り直しました。で、前のは削除しておきました。

そのままScalaのコード公開されてる方がいらっしゃいましたm(_ _)m↓

Amazonの Product Advertising APIを Scalaから呼び出す - ブログ - ワルブリックス株式会社

欲しい情報を手にいれる

基本のことはわかったので、どういう情報が欲しいかの細かい部分をおぼえがき気味に記載します。

商品をキーワードで検索したい。

リクエストパラメータに、Operationというのがあります。
キーワード検索の場合は、ItemSearchを指定します。

Operation=ItemSearch
&Keywords=何かしらのキーワード

(※送る前には、パラメータ名でABC順に並べ替える)

ちなみにこれだとキーワードによっては膨大にヒットしちゃうので、商品の種類で限定するのが効果的です。それがSearchIndex。以下のブログに一覧がわかりやすく載っていた&公式へのリンクがあったので参考にしました。
http://35over.hatenablog.com/entry/2014/04/19/010915

Operation=ItemSearch
&SearchIndex=Books
&Keywords=何かしらのキーワード

(※送る前には、パラメータ名でABC順に並べ替える)

ちなみに、SearchIndexを2つ以上持ちたい場合は以下のように指定します。
参考→Amazon Product Advertising API で複数の Search Index から検索を行う - Qiita

Operation=ItemSearch
&SearchIndex.1=Music
&SearchIndex.2=DVD
&Keywords.shared=何かしらのキーワード


参考サイト
「Amazon API」の使い方⑥-パラメーターの種類とか編- | HPcode

本をISBNで検索したい

↓以下のサイトが思いっきりそうでした。
Amazon API を使って、ISBNコードから書籍検索 - きみが思い出になる前に

ASINという、Amazon独自の商品管理ナンバーもあって、そちらも一意性があっていいですね。
ISBNだと、電子書籍とかには存在しなかったりするので…。

画像がほしい・商品の詳細情報がほしい

リクエストパラメータにはResponseGroupというパラメータがあり、初期値はSmallらしいです。
画像や、その他商品の細かい情報がほしいときは、ResponseGroupを指定します。
画像のResponseGroupはImages。

ResponseGroup=Images

商品の情報については、作者や発行会社など、商品の情報はItemAttributesに入っているので、そちらも取ることが多いかな?
複数選択は以下のように記載します。

ResponseGroup=Images,ItemAttributes


ちなみに返ってきたXMLにどう入っているかは、公式ドキュメントを参考に。
記載のあるものがすべて入っているわけではないので、プログラム内で解析するときにはないことも前提に。
・ItemAttributes
Product Advertising API
・Images
Product Advertising API


他、参考ドキュメント

公式ドキュメント
http://awsdocs.s3.amazonaws.com/Associates/latest/prod-adv-api-dg.pdf