はね丸のWEB工房

Product Advertising APIを使用して画像と口コミを取得と題して、情報共有をします

はね丸のWEB工房WEB API>投稿記事を個別表示

このエントリーをはてなブックマークに追加

まとめてゲームの口コミ情報


再びで申し訳ないですが、「まとめてゲーム」のちょっとした機能改善をしています。
時間がなくて後回しにしていたamazonの「Product Advertising API」を使用した商品画像の拡充と、アマゾンのサイト内で使用されている口コミやレビューの取り込みです。

Product Advertising APIは別のサイトでも使ったことがありますが、かなり久しぶりに使います。
特に2010年11月9日に実施された「Reviewsレスポンスグループの仕様変更」以降初めてですので、ちょっとドキドキします。(笑)



スポンサーリンク


PEARのServices Amazonを使用

Product Advertising APIとのやり取りには、PEARのパッケージである「Services Amazon」を使用します。

正直、2009年より更新が止まっており、永遠のベータ版であるこのパッケージを使うのに不安があります。
しかし2009年8月15日に実施された「Amazon アソシエイト Web サービスの名称変更および署名認証」の認証ロジックを、当時の私は理解できず…。(笑)

Services Amazonを使用すれば、その複雑怪奇な認証ロジックも内包してくれるため、そのままズルズルと使用している次第です。

Product Advertising APIをメインで使うようなサイトであれば切り替えも検討しようと思いますが、補助的なものであればこのままでいいかな…という甘い考えです。(笑)


Services Amazonのインストール

レンタルサーバだと、PEARとしてインストールするのは難儀ですので、Services Amazonのページから

PEARのServices Amazonをダウンロード
左上の「Download」タブをクリックし、右のバージョン(今回は0.8.0)リンクをクリック。
すると圧縮ファイルをダウロードできます。

tgzで圧縮されているので、フリーの解凍ツール等を使用して解凍、いくつかファイルがありますが「Amazon.php」のみをFTPを使用してサーバへアップします。

URLでアクセスできるのであれば、格納場所はどこでもかまいません。
ご自身の設置ルールに従って設置してOKです。
もちろん、使用するPHPファイルでのrequire_onceを忘れずに。

使用しているレンタルサーバの環境によっては、別途PEARのパッケージである「XML_Serializer」が必要になりますので、同じ要領でダウンロードして放り込んでください。(笑)


レビュー情報取得での注意事項

レビューをiframe表示するためのURLですが、取得できなくて焦りました…。
検証した結果、APIのバージョン指定(2010-09-01以降バージョン)が必要のようですね。

仕様変更のあったバージョン以降でないと取得できないのは、当たり前といえば当たり前かもしれませんが。(笑)

$amazon = new Services_Amazon(ACCESSKEY_ID,SECRET_ACCESSKEY,ASSOCIATE_ID);
$amazon->setLocale('JP');
$amazon->setVersion('2010-10-01');
$options = array();
$options['IdType'] = "EAN";
$options['SearchIndex'] = "All";
$options['ResponseGroup'] = "Images,Reviews";



以上のように追加したことで、レビューのURLが取得できるようになりました。

ただしレビューがある・なしに関わらずURLは返却されるため、レビュー情報がない場合は「申し訳ありません。今回、本商品に対するレビューは表示できません。」と表示されます。
これはさすがに体裁としてどうか?と思うのですが、判断するパラメータは皆無です。

そこで考えたのは発売日を参照し、発売前の商品であればレビュー表示をしないとすることです。
以前「発売前の商品にレビューが付くのはどうか?」という議論があり、アマゾンは発売前の商品にレビューを書けなくしました。

よってこの判断基準で表示をコントロールすれば、完全ではありませんが「申し訳ありません」画面の表示を軽減できますね。


レビュー情報URLの取得

レビューをiframe表示するためのURLを取得し、iframeタグで表示します。

iframeというのがなんとも…といった感じです。(汗)

まぁamazonの最大の武器といえる口コミ情報が、他のサイトにもテキストとして表示されるのはSEO的に問題があるという面と、問題のある口コミをすぐにネット上から消す事ができない…という面からの仕様変更なのでしょう。

サイト運営者としては、わからんでもないですが。(笑)

PHPでファイルを取り込んでしまう…とか、いろいろやり方はありそうですが、「Reviewsレスポンスグループの仕様変更に関する、よくあるご質問」でもiframe使用を連呼していますので、ここは素直に従いましょう。

あとレビュー情報には有効期限がありまして、24時間です。
これを過ぎると、表示内容が保証されないとか。

ふとレビュー情報URLを見ると、「&exp=2011-04-09T16%3A53%3A55Z」といったモロ期限っぽいパラメータが…。

…これを弄れば延命が可能なのでは?(汗)

私はもちろんそのまま表示しますけど、ちょっと技術的に興味はあります。(笑)


画像URLの取得

楽天ウェブサービスの楽天商品検索APIと違いまして、amazonは数多くの画像を返してくれます。
これを使わない手はありませんね。

画像のサイズに関しても数パターン用意してくれているのですが、必ずしも欲しいサイズとは限りません。
サイトとして「どうしてもこのサイズ」というものがある場合もありますので。

ミディアムサイズの画像URLをみますと、

http://ecx.images-amazon.com/images/I/61zbrIeA1RL._SL160_.jpg



となっていますが、これを

http://ecx.images-amazon.com/images/I/61zbrIeA1RL._SL200_.jpg


と数字部分を変更すると、画像サイズが変わります。
数字=ピクセルです。

縦横の長さが違う場合は、長辺の方に指定サイズが適用されます。
なかなか便利ですね。


以上で今回の追加作業は終わりです。


スポンサーリンク
hanemaru_comをフォローしましょう このエントリーをはてなブックマークに追加
カテゴリー WEB API
キーワード WEB API,amazon API,Product Advertising API,PEAR,Services Amazon

Twitterからきました。
自分はまだ学生の身で、これからどんどん勉強していかなければならないので参考にさせて頂きます!

たいやき 2011-04-09 13:52:12

こんにちは、たいやきさん。
コメントありがとうございますっ。

私も少ない時間を使って、手探りでものを作っています。
今後もよろしくお願いします。

はね丸 2011-04-09 13:56:04

Product Advertising APIを調べていたらたどり着きました。

現在31歳ですが、新たに色んなことにチャレンジしていこうと思っていた矢先、はね丸さんの記事がすごい参考になりそうです!

ありがとうございます!

自転車仲間 2011-04-26 17:45:35

こんにちは、自転車仲間さん。
30代前半はチャレンジ・躍進の年代ですよね、素晴らしいです。

私の記事がその足しになるのであれば、嬉しいことです。
今後もよろしくお願いします。

はね丸 2011-04-26 18:05:50









※コメントは管理人の承認後、表示されます。

コメントを受け付けました。
コメントは管理人の承認後、表示されます。

表示順:新規順 | 投稿順 | 人気順 | 注目順