« Amazon Webサービス(AWS)で呼び出す画像の表示が遅いので変更 | メイン | Yahoo!画像検索APIでリンク切れをチェックする方法(PHP) »

Amazon.co.jp 商品画像の有無をチェックする方法(PHP)

Amazon.co.jpから画像を呼び出す際に、

http://images-jp.amazon.com/images/P/XXXXXXXXXX.09._SL160_.jpg

このような形式でアクセスできることは周知の事実だが、この画像の有無で表示する内容を変える方法(PHP)をメモ。
* 他人さまに教えられるレベルではないので個人的なメモ

この方法は次のような場合で利用価値がある。
基本的には、何かしらの理由でASINだけわかっている場合に使える。

  • Amazon Webサービスで呼び出した画像(Images)を利用せず、上に挙げたような形式で画像を呼び出す場合
  • Amazon WebサービスのItemLookupなどのResponseGroup=Similaritiesから得た情報で画像を呼び出す場合
  • 上記以外でASINがわかっている場合

Amazon.co.jpは、上に挙げたURLで画像にアクセスすると、画像がある場合はその画像を表示し、ない場合は、1px X 1pxのダミー画像(.gif)を表示する。画像がない場合にその場所が「空」にならないような配慮だろう。しかし、画像がない場合は、自前の「No Image」を出したい場合もある。

そんなときは、PEARのHTTP_Requestを使ってContent-Typeを調べ「image/jpeg」の場合は本来の画像を表示し、そうでない場合は「No Image」を表示させる。

require_once 'HTTP/Request.php';

// リクエストを行うURLの指定
$url = 'image-url';

$option = array(
'timeout' => 60, // タイムアウトの秒数指定
);

// HTTP_Requestの初期化
$http = new HTTP_Request($url, $option);

$response = $http->sendRequest();
if (!PEAR::isError($response)) {
$header = $http->getResponseHeader();
$contentType = $header['content-type'];

if ($contentType === 'image/jpeg') {
// 画像を表示
} else {
// No Imageを表示
}
}

ただし、まれにダミー画像が.jpgの場合があるので、その場合は泣くしかない。
個人的には、利用頻度が高い。

トラックバック

このエントリーのトラックバックURL:
http://akitomo.net/mtype/mt-tb.cgi/1218

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2008年06月14日 02:17に投稿されたエントリーのページです。

ひとつ前の投稿は「Amazon Webサービス(AWS)で呼び出す画像の表示が遅いので変更」です。

次の投稿は「Yahoo!画像検索APIでリンク切れをチェックする方法(PHP)」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。