Amazon APIのコード

posted at 14:30:15 on 2014-12-02 by tsuka | Category: 日常

このブログを数年放っておいた間にAmazon Web Services(Product Advertising API)の仕様が変わっていたのでサイドバーのコードも書き直しました。

ファイルセットは下記の通り
・amazonapi.php(基底クラス)
・myamazon.php(継承クラス)
・test_myama.php(テストページ)
・adv.css(テストページのCSS)
・cache(キャッシュフォルダ)

AWSから取得したXMLはキーワードやASINコードのMD5ファイル名でキャッシュしますので、キャッシュフォルダには書き込み権限を与えます(chmodで755や777に)、キャッシュはcronなどで24時間で消すようにします。

継承クラスMyAmazonの下記の3行は自分のAccess Key ID、Secret Access Key、アソシエイトIDにします。(myamazon.phpの8〜10行目)

        // AWS user configurations
        protected       $AccessKeyId = '****************';
        protected       $SecretAccessKey = '****************';
        protected       $AssociateTag = '********';
 

デモページではテストなのでxml->Items->Item->EditorialReviews->EditorialReview->Contentを参照して商品説明を表示させていますが、商品説明にはタグの整合性がとれていないアイテムがたまにありますので、通常はResponseGroupはImages,ItemAttributesでの参照になると思います。
ソースにはコメントで入れてあります。(myamazon.phpの33〜34行と57〜58行)
Images,ItemAttributesの方が1アイテムあたりのキャッシュサイズも1Kbyte程度小さくて済みます。

'ResponseGroup' => 'Medium',
// 'ResponseGroup' => 'Images,ItemAttributes',
 


DEMO


上記のデモページでは検索フォームでキーワードの商品を表示します。フォームの下は、キーワードを指定しての表示、ASINコードでの表示、ASINコード配列からの表示例です。

エラー処理は簡素にやってます。(ローカル環境でチェックする場合は$this->ErrorResponseを出力してます)
myamazon.php
8687行目
//                      $html = '<div class="error">エラーです(Error: ' . $this->ErrorResponse . ')</div>';
                        $html = '<div class="error">エラーです(Error)</div>';

96101行目
        private function _isXmlError($xml) {
                if(isset($xml->Error)) return true;
                if(isset($xml->ItemLookupErrorResponse->Error))  return true;
                if(isset($xml->ItemSearchResponse->Error))  return true;
                return false;
        }

一応ログには.htaccessでdenayをかけます
<Files ~ "^\.ht">
deny from all
</Files>

<Files ~ ".log$">
deny from all
</Files>


デモページ用に書いたコードは下記
amazonapi.php


myamazon.php


test_myama.php


adv.css


文字コードはUTF-8、改行コードはLFです。
なお、アイコンはAmazonで配布されてるものを使ってます。(https://affiliate.amazon.co.jp/gp/associates/tips/t3/a3)


ところでAmazonにマグカップあったんだね
テストに「マグカップ」で検索したらロゴ入りのマグがでてきた

...ポチっとな

この記事についたタグ【

ブログ内の関連記事

Comments

Add Comments





プレビュー

TrackBack

トラックバック
このエントリにトラックバックはありません
このトラックバックURLを使ってこの記事にトラックバックを送ることができます。 もしあなたのブログがトラックバック送信に対応していない場合にはこちらのフォームからトラックバックを送信することができます。.

Back to Top