2010年02月26日

PEAR Services_Amazon を使ってみる

 楽天ウェブサービスが安定しないこともあり(新規デベロッパーIDの発行を停止したようですね)、Amazon を併用するようにしたのですが、せっかくなので、新しいことを試してみようと、PEAR Services_Amazon を使ってみることにしました。書籍検索の場合は、以下のような感じです。

require_once 'Services/Amazon.php';
require_once 'Cache.php';

$access_key_id = '(公開アクセスキー)';
$secret_access_key = '(秘密アクセスキー)';
$associate_tag = '(アソシエイトタグ)';
    
$amazon = new Services_Amazon($access_key_id, $secret_access_key, $associate_tag);
$amazon->setCache('file', array('cache_dir' => '(キャッシュの保存先)'));
$amazon->setCacheExpire(3600); // 秒数で指定
$amazon->setLocale('JP');

$options = array();
    
$options['ResponseGroup']  = 'Medium'; //取得したい情報
$options['Keywords']       = '検索したいキーワード';
$options['Sort']           = 'salesrank';

$result = $amazon->ItemSearch('Books', $options);

if (PEAR::isError($result)) {
        echo $result->message;
} else {
    foreach($result['Item'] as $item) {
        $ItemData[] = array(
            'ImageURL' => $item["SmallImage"]["URL"],    
            'DetailPageURL' => $item["DetailPageURL"],
            'Title' => $item["ItemAttributes"]["Title"],
            'Price' => $item["ItemAttributes"]["ListPrice"]["FormattedPrice"]
        );
    }
}

 これで、$ItemData の中に商品データが入るので、適宜加工して表示するような形になります。ちょっと変わったこととしては、キャッシュを使うことによって、同じリクエストを連続して行わないように工夫をしています。この機能を使うためには、Services_Amazon のほかに、Cache のパッケージも必要となります(Cache_Lite ではないので注意)。

 パッケージのドキュメントもクラスのリファレンスしかないため、取っつきにくいですが、電子署名認証を自動でやってくれたり、結果を連想配列で返してくれたりと、かなり使い勝手がよいので、おすすめです。他にも、複数のキーワードについてひとつのリクエストで処理する doBatch メソッドや、複数の操作をひとつのリクエストで処理する doMultiOperation メソッドなども便利だと思います。

posted by まいける at 01:46 | Comment(0) | TrackBack(0) | PHP