AmazonProduct Advertising APIをPHPから使う

Amazon Product Advertising APIPHPから使ってみます。



はじめに

以前、Perlで商品画像を引っ張るのにチャレンジしました。


ASINからAmazonの商品画像のURLを取得する
 http://d.hatena.ne.jp/mitaina/20100119/1263897475


意外に簡単じゃん!と味をしめて(?)、本領のPHPAmazonのデータをあれやこれやといじってみます。
動機は


です。
4度に渡る再販でも瞬殺。


再販予定はわかっていたのだからこまめにチェックしておけばいいんですけど、忘れるんですよね……。


在庫が回復したり、値段が一定以下になったりした場合に、速やかに通知してくれる自分用サービスを作ろうと思いました。


まず周辺情報

PHPと相性のいいXMLだし、上の記事でつかんだ感覚から、ライブラリを使うほどでもない……と思いつつ、面倒は減らしたいので探してみます。


Amazon API wiki
 http://smilejapan.net/wiki/index.php?Amazon%20API


PHP x APIs - Web Service API用のPHPライブラリまとめ - amazon
 http://0-oo.net/sbox/php-x-apis#amazon



PEAR::Services_Amazonは、id:p4lifeさんが携わっているということで、情報がたくさん。一番オーソドックスなようです。


現在、PEAR::Services_Amazon 0.8.0 beta(2009-05-10リリース)が最新です。


Amazon Product Advertising API への対応(PHP版)(もやし日記)
 http://d.hatena.ne.jp/p4life/20090510/1241954889



どうしようか悩んだのですが、署名部分のみ参考にすることにして(上記記事には署名部分の処理のソースがあります)、XMLを自力でパースすることにしました。
こうしておけば、あとで他のAPI等でも流用できるかな、という甘いもくろみもあります(^_^;


実際にやってみた

Amazon Product Advertising API への対応(PHP版)(もやし日記)の「署名認証リクエストの作成方法(PHP5)」のソースに、Access Key ID・Secret Access Keyを入力しました。


それだけ。
このphpを実行すれば、リクエスト用のURLが表示されます。
このURLをコピペしてブラウザから開けば、「もやし」に関する本の情報がXMLファイルとして取得できます。

実に簡単。
懸案の署名付リスクエスともあっさり解決しました。



商品画像リダイレクトCGIbyPerlの場合のように、Digest::SHAみたいな別のライブラリは不要です。
hash_hmacはPHP5では標準的に入ってますからね。
……あー、PHPで書けば面倒なかったのにね(笑)


Amazon Product Advertising APIの使い方

署名以外はAmazon Web Servicesの情報がそのまま使えるので、それに従えばいいですね。
(要は末尾にSignatureパラメータが追加されただけですからね)


とりあえずクイックスタートガイド(日本語/PDF/2008-08-19付)

$params['Version'] = '2009-03-31';

APIのバージョンを指定します。
今日現在の最新のバージョンは2009-11-02です。


バージョンによって使用できるパラメータが変わるので気をつけます。


amazon web services Category: Release Notes
 http://developer.amazonwebservices.com/connect/kbcategory.jspa?categoryID=17


$params['Operation'] = 'ItemSearch'; // ItemSearch オペレーションの例


実行するオペレーションを指定。
一般的にはItemLookupやItemSearchでしょうけど、カートに追加等もできるようです。


AjaxTower Amazon Web サービス入門 共通パラメータ オペレーション(Operation)
 http://www.ajaxtower.jp/ecs/para/index5.html


$params['Keywords'] = 'もやし'; // 文字コードUTF-8


キーワード以外に、タイトルや著者名、オーケストラ等でも検索できるようです。


AjaxTower Amazon Web サービス入門 商品検索(ItemSearch) キーワードで検索(Keywords)
 http://www.ajaxtower.jp/ecs/itemsearch/index3.html

$params['ListType'] = 'WishList';


で、肝心の欲しい物リスト。


amazonのほしいものリストを取得した。(koplecの日記)


とっても詳しくて参考になりました。

$params['operation'] = 'ListLookup';
$params['ListId'] = 'AAAAAAAA'; //欲しい物リストのID
$params['ResponseGroup'] = 'ItemAttributes'; //商品の詳細情報
$params['Condition'] = 'All'; //新品or中古


あとはごりごり書いていくだけですね!


【追記】2010/02/01 15:30
どんなProductGroupがあるのか、わからなかったのでリストになっているページにリンク。
上があたらしいですが、一応参考までに下のも。ありがとうございます。


AmazonのストアアイコンならびにカテゴリまたはPAAPIのProductGroupとの対応表(ゆっくり…して…イってネ!)
 http://sakuratan.biz/archives/1510


ストアとProductGroupの対応表 (たつをの ChangeLog)
 http://chalow.net/2006-05-30-2.html


Docs: Product Advertising API
 http://developer.amazonwebservices.com/connect/kbcategory.jspa?categoryID=19