PHP を用いて AWS から ASIN に該当する商品情報を取得する
SPECIAL
Amazon Web Services (AWS) を利用して、ASIN に該当する商品の詳細情報を PHP から取得してみます。
AWS から商品情報を取得する
Amazon Web Services のアクセスキーを取得する で取得した Amazon Product Advertising API のアクセスキーを使用して、Amazon Web Services (AWS) から商品情報を取得してみます。
ここでは、AWS に PHP からリクエストを送信できる環境を整える で記したのと同じように、PHP から Services_Amazon ライブラリを使用して、情報を取得してみたいと思います。
例えば ASIN が B001TI6T34 の商品情報を取得したい場合には、次のようなプログラムになります。
$amazon = new Services_Amazon(ACCESS_KEY, SECRET_ACCESS_KEY);
$amazon->setLocale('JP');
$options = array('ResponseGroup', 'Large');
$result = $amazon->ItemLookup('B001TI6T34', $options);
で指定している ASIN という ID は、Amazon の商品ページ、例えば "きくの IFC コーヒー ドリップバッグ スペシャルブレンド" 等の商品ページ内で確認することができるようになっています。
このようにすることで、Amazon Web Services から返された XML 情報が、配列の形で $result に保存されます。
取得されたデータの例は、取得できた配列のダンプを ItemLookup API で取得した内容のサンプル に記してみましたので、プログラミングの際はそこに記した構造と照らし合わせながらコーディングすると楽になると思います。
なお、ASIN が見つからないなどの場合でエラーとなった場合には、"ItemLookup" 関数の戻り値を "PEAR::isError" 関数に渡すと false となるので、それで判断することができます。
ItemLookup のオプションについて
ItemLookup メソッドに渡す $options によって取得できる商品情報が変化します。
ResponseGroup
取得する商品情報を調整するのは 'ResponseGroup' キーのようですので、これにどういった値を設定すれば、どのような値を取り得るのかを整理してみようと思います。
平成 23 年 2 月 6 日の時点では、次のような内容を取得することができました。
Small | ASIN DetailPageURL ItemLinks ItemAttributes |
商品の ID (ASIN) や詳細情報の URL (DetailPageURL)、欲しいものリストや友達に知らせるなどのリンク先 URL (ItemLinks)、商品名・商品グループ・タイトル (ItemAttributes) が取得できます。 |
---|---|---|
Medium | ASIN DetailPageURL ItemLinks SalesRank SmallImage MediumImage LargeImage ImageSets ItemAttributes OfferSummary |
"Small" の情報の他、売上ランキング (SalesRank)、小さい画像 (SmallImage)、中くらいの画像 (MediumImage)、大きめの画像 (LargeImage)、大中小いくつかの商品画像 (ImageSets)、商品の価格や在庫数などの情報 (OfferSummary) が取得できます。また、商品情報 (ItemAttributes) は、寸法や重量などの "Small" よりも詳細な情報が取得されるようです。 |
Large | ASIN DetailPageURL ItemLinks SalesRank SmallImage MediumImage LargeImage ImageSets ItemAttributes OfferSummary Offers SimilarProducts Tracks BrowseNodes |
"Medium" の情報の他、各社の価格や在庫状況 (Offers)、こんな商品も買っています情報 (SimilarProducts)、商品を辿る手掛かりとなるブラウズノード情報 (BrowseNodes) を取得できます。音楽 CD 等の場合には収録曲の情報 (Tracks) も取得されます。 |
Accessories | ASIN | ? |
AlternateVersions | ASIN | ? |
BrowseNodes | ASIN BrowseNodes |
商品を辿る手掛かりとなるブラウズノードの ID や名称といった情報を取得できます。 |
Collections | ASIN | ? |
EditorialReview | ASIN | ? |
Images | ASIN SmallImage MediumImage LargeImage ImageSets |
小さい画像 (SmallImage)、中くらいの画像 (MediumImage)、大きめの画像 (LargeImage)、大中小いくつかの商品画像 (ImageSets) といった情報を取得できます。 |
ItemAttributes | ASIN DetailPageURL ItemLinks ItemAttributes |
詳細情報の URL (DetailPageURL)、欲しいものリストや友達に知らせるなどのリンク先 URL (ItemLinks)、商品の名前・商品グループ・タイトル・寸法・重量などといった詳細な商品情報 (ItemAttributes) が取得できます。 |
ItemIds | ASIN | ? |
ListmaniaLists | ? | Amazon returned invalid HTTP response code 410 |
MerchantItemAttributes | ? | Amazon returned invalid HTTP response code 410 |
OfferFull | ASIN OfferSummary Offers |
商品の価格や在庫数などの情報 (OfferSummary)、各社の価格や在庫状況 (Offers) を取得できます。"OffersFull" の場合は "Offers" と比べて、[Offer]->[Merchant] の中に [Name] が追加されるようでした。 |
OfferListings | ASIN Offers |
各社の価格や在庫状況 (Offers) を取得できます。 |
OfferSummary | ASIN OfferSummary |
商品の価格や在庫数などの情報 (OfferSummary) を取得できます。 |
Offers | ASIN OfferSummary Offers |
商品の価格や在庫数などの情報 (OfferSummary)、各社の価格や在庫状況 (Offers) を取得できます。"OffersFull" の場合は "Offers" と比べて、[Offer]->[Merchant] の中に [Name] が追加されるようでした。 |
PromotionDetails | ? | Amazon returned invalid HTTP response code 410 |
PromotionSummary | ? | どのような情報が追加されるかどうかわかりませんでした。 使用の際は "Offers", "OfferFull", "OfferListings", "Large" のどれかと合わせて指定する必要があるようです。 |
PromotionalTag | ASIN | ? |
RelatedItems | ASIN RelatedItems |
音楽 CD 等の場合で、"RelationshipType" オプションと併せて使用することで、関連する商品の ASIN を取得することができるようです。関連する商品がない場合には <RelatedItems> は取得されません。 |
Request | ASIN | ? |
Reviews | ASIN | ? |
SalesRank | ASIN SalesRank |
商品の売り上げランキング (SalesRank) を取得できます。 |
SearchBins | ? | ? |
SearchInside | ? | ? |
ShippingCharges | ? | どのような情報が追加されるかどうかわかりませんでした。 使用の際は "Offers", "OfferFull", "OfferListings", "Large" のどれかと合わせて指定する必要があるようです。 |
ShippingOptions | ? | AWS.NotAuthorized:The identity contained in the request is not authorized to use this ${param-name} |
Similarities | ASIN SimilarProducts |
"この商品を買った人はこんな商品も買っています" の一覧 (SimilarProducts) を取得できます。 |
Subjects | ? | Amazon returned invalid HTTP response code 410 |
Tags | ? | Amazon returned invalid HTTP response code 410 |
TagsSummary | ? | Amazon returned invalid HTTP response code 410 |
Tracks | ASIN Tracks |
音楽 CD などの場合に、その CD に収録されているトラック情報 (曲番と曲名) を取得できます。 |
VariationImages | ASIN | ? |
VariationMatrix | ASIN | ? |
VariationMinimum | ? | Amazon returned invalid HTTP response code 410 |
VariationOffers | ASIN | ? |
VariationSummary | ASIN | ? |
Variations | ASIN | ? "US" リージョンでのみ利用可能のようです。 |
これらの項目を、カンマ区切りの文字列で、複数指定することが可能です。
もしここを何も指定しなかった場合は、"Small" が設定されているのと同じように動作するようでした。
RelationshipType
"ResponseGroup" オプションで "RelatedItems" を指定する場合には、合わせて "RelationShipType" オプションも指定する必要があるようです。
このオプションは、次の選択肢の中から選んで設定することができるようでした。
AuthorityTitle | |
---|---|
DigitalMusicArranger | |
DigitalMusicComposer | |
DigitalMusicConductor | |
DigitalMusicEnsemble | |
DigitalMusicLyricist | |
DigitalMusicPerformer | |
DigitalMusicPrimaryArtist | |
DigitalMusicProducer | |
DigitalMusicRemixer | |
DigitalMusicSongWriter | |
Episode | |
Season | |
Tracks |
これらの詳細な意味については調べていませんが、音楽 CD に関する作曲者や編曲者などといった感じで、関連する商品を見つけて行くのに使用することができるのではないかと思います。
ページ指定
中には複数ページに分けて取得しなければならないものもあるようです。
そのページ番号を指定するために、次のようなオプションも用意されているようでした。
OfferPage | 販売者の情報は 10 個ずつを 1 ページとして扱うようです。 |
---|---|
RelatedItemPage | 関連する商品の情報は、いくつかずつを 1 ページとして扱うようです。 |
ReviewPage | レビューに関する情報は 5 個ずつを 1 ページとして扱うようです。 |
TagPage | |
VaridationPage |
これらのオプションにページ番号を指定することで、任意のページを取得することができるようです。
なお、これらの情報が何ページの情報を持っているかは、"ItemLookup" で得られた結果から判断できるようでした。たとえば "OfferPage" の場合は <Offers> で得られた <TotalOffers> や <TotalOfferPages> から、全体の数やページ数を確認することが可能です。