とあるセクシーなデータ分析官

を目指す渋谷で働くソーシャルゲーム分析者の卵

amazonAPIを使ってamazonの画像を取得する関数を書いてみた

amazonの商品画像(110*160サイズ)をamazonidから取得する関数です。
この関数ではamazonAPIを使っているので、amazonAPIのユーザー登録を済ませる必要があります。
ユーザ登録でもらったIDを$keyidとして使えばOK


また、1アクセスごとにAPIを呼ぶのは非効率のため
Cache_Liteを使ってキャッシュに保存しておきます。
これでページの処理が俄然軽くなる!


そんな混合技な関数。

    $amazonid = 4484031019; //10桁のアマゾン商品ID
    
    public static function getAmazonImage($amazonid)
    {
        //ライブラリを読み込む
        require_once "Cache/Lite.php";
        
        $option = array(
            "cacheDir" => sfConfig::get('sf_cache_dir')."/lite/",
            "lifeTime" => "86400"
            );

        //Cacheがあれば読み込み、無ければAPIにアクセスする
        $cache = new Cache_Lite($option);
        if ($data = $cache->get($amazonid, "cache")) {
            return $data;
        } else {
            $keyid = 'hogehogehugahuga';
            $url = "http://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService&SubscriptionId=".$keyid."&Operation=ItemLookup&ItemId=".$amazonid."&ResponseGroup=Medium";             
            $xml = simplexml_load_file($url);
      $amazonitem = array()
            $amazonitem["image"]   =  $xml->Items->Item->MediumImage->URL; //画像URL
            $amazonitem["link"]    = $xml->Items->Item->DetailPageUR; //アマゾンのページへのURL(アフィリエイト)
            
      //結果をCacheに保存する
            $cache->save($amazonitem, $amazonid, "cache");
            return $amazonitem;
        }
    }


参考:http://php.y-110.net/wiki/index.php?PEAR%A1%A7Cache_Lite