Services_Amazonでアマゾンのランキングを表示(完結編)

昨年の8月からamazonのランキング表示を自前のサーバで表示さようとして、試行錯誤していましたが、ようやく実現することが出来ました。
前回から少し時間が空きましたので、今までの経緯を簡単に振り替えると、今までは、「AZlink」とか「ランキングツール」などの外部APIを使用してお手軽にアマゾンのランキングを表示させていました。ただ、いきなりの仕様変更やサーバの負荷によりランキングが表示されないことがあり、自前のサーバだけで、なんとか出来ないかと思ったのがこの企画の始まりまです。
google先生の協力で、PEARのServices_amazonを使えば出来そうな事が判ったので、インストールを行い、PHP単体での動作確認まで行っていました。今まで実施した内容については過去の記事をご覧ください。

 

商品リンクの種類について

商品のリンク(URL)には、「直接リンクのクリック」「直接リンク以外のクリック」の2種類が存在していて、「直接リンク以外のクリック」の場合、何の商品がクリックされた商品されたか判らない状態になります。Services_Amazonを使用してアマゾンのAPIから取得した配列をそのまま使った場合、「直接リンク以外のクリック」のURLで表示されるため、この後で公開するアマゾンランキングPHPプログラムでは、「直接リンクのクリック」として認識されるように、前回公開したPHPプログラムから修正を行っています。

参考までに、「直接リンクのクリック」「直接リンク以外のクリック」の違いですが、以下のURLをご覧ください。両方とも同じ商品を示しています。

直接リンクのクリック
http://www.amazon.co.jp/exec/obidos/ASIN/B006ZTJOVQ/itor2to-22/ref=nosim/

 

直接リンク以外のクリック
http://www.amazon.co.jp/%E6%A9%9F%E5%8B%95%E6%88%A6%E5%A3%AB%E3%82%AC%E3%83%B3%E3%83%80%E3%83%A0UC-5-Blu-ray-%E5%8F%A4%E6%A9%8B%E4%B8%80%E6%B5%A9/dp/B006ZTJOVQ%3FSubscriptionId%3DAKIAJRV3ES7QKTISVIEQ%26tag%3Ditor2to-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB006ZTJOVQ


最終PHPプログラム

最終的に出来上がったPHPプログラムを公開します。管理を楽にさせたかったため、HTML文からPHPプログラムを呼び出す際に、引数を使ってカテゴリを選択出来るようにしました。後、PHPプログラムでは、echo を使ってからdocument.writeでHTMLを表示させていますが、echoの行が複数あるとHTMLに出力されませんでした。ここに気が付かずに時間がかかってしまいました。。..or2

HTML文(以下のURLを貼り付け)
<script type="text/javascript" src="http://or2.to/amarank.php?category=DVD&param=562020"></script>

 

PHPプログラム(http://or2.to/amarank.php)
<?php
 
require_once('Services/Amazon.php');
 
header("Content-type: application/x-javascript");
 
$category = $_GET['category'];
$param = $_GET['param'];
 
define('ACCESSKEY_ID', 'XXXXXXXXXXXXXXX');
define('SECRET_ACCESSKEY', 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
define('ASSOCIATE_ID', 'XXXXXXXX-22');
define('ECS_VERSION','2009-03-31');
define('RESPONSE_GROUP','Small,Images,ItemAttributes,OfferSummary,Reviews');
 
$sort = 'salesrank';
$page_id='1';
$amaarray='';
 
$result = get_item_by_browsenode($category,$param,$sort,$page_id);
 
if (!PEAR::isError($result))
{
        for( $i = 0; $i <  5; $i++ )
        {
                $asin = $result['Item'][$i]['ASIN'];
 
                $url = "<a href=http://www.amazon.co.jp/exec/obidos/ASIN/".$asin."/".ASSOCIATE_ID."/ref=nosim/><img src='".$result['Item'][$i]['MediumImage']['URL']."'><br>";
                $title = $result['Item'][$i]['ItemAttributes']['Title'].'</a><br><br>';
                $amaarray = $amaarray.$url.$title;
        }
}
 
echo "document.write(\"$amaarray\")";
 
function get_item_by_browsenode($category,$param,$sort,$page_id){
 
    $amazon = new Services_Amazon(ACCESSKEY_ID,SECRET_ACCESSKEY,ASSOCIATE_ID);
    $amazon->setLocale('JP');
    $options = array();
    $options['BrowseNode'] = $param;
    $options['Sort'] = $sort;
    $options['ResponseGroup'] = RESPONSE_GROUP;
    $options['ItemPage'] = $page_id;
 
    $ret = $amazon->ItemSearch($category,$options);
    return $ret;
}
?>

出力させた結果については、右の商品画像を見てください。
自分で表示させたランキングは、レイアウトにマッチして、外部APIを使って表示させたランキングとは一味違う気がします。(あくまでランキング表示は自己満足なので、クリック数が上がるわけではないのが残念です。)

関連記事

人気記事のランキング

トラックバックURL

このエントリーのトラックバックURL:
http://or2.to/mt/mt-tb-mt.cgi/83

コメントする