APIで悩みました

今、アフリエイトサービスにAPIを利用できるところができています。なんとかAPIをPHPを使って利用できるようになってきたので、LINKSHAREのクロスオーバーサーチ(リンクシェア・Webサービス)を申し込み、アクセス許可のトークンをいただきました。
そして、いつものようにPEARのXML/Unserializer.phpというユーティりティを使ってみたのだけれど文字化けするのです。今まで、アマゾンでも、リクルートのWEBサービスでも利用できたのに・・・。XMLのソースをみると日本語がUNICODEという記号になっています。いままでこんなことはなかったのに、ということで、半日悩みました。
 それで、他にリンクシェアのクロスオーバーサーチを活用しているところがないかと検索したら、「LinkShare Technical 」を見つけました。こちらはPHPのソースも公開しておられるのでダウンロードしてみました。よく出来たプログラムで、私のような初心者には大変勉強になります。PEARのXML/XML_Tree_Ex.phpを利用していましたが、基本は一緒なので、よくみると、URLからXMLを読み込んで出力する時に「UTF-8」というオプションコードを加えていました。
今まで、PEARのXML/Unserializer.phpでは別に加えなくても支障なく配列に出力してくれていましたが、試しに
$parser = new XML_Unserializer(array('parseAttributes' => true,'targetEncoding' => 'utf-8'));
と書いて見ました。結果は文字化け解消です。
自分の記憶に残るよう、書いておきます。LinkShare Technical さんありがとうございました。

結婚しようよ2

映画「結婚しようよ」見ました。全編に流れる拓郎ソングと心優しい人たちの映画で本当に心が癒されました。
映画の中で演奏された中ノ森BANDの「風になりたい」は購入して聞いています。なかなかいいです。

$asin = "B000ZLS9J8";
$asin = urlencode($asin);

$req = "http://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=1C16K44QY6WJFGJY4A82&AssociateTag=okayamawebsea-22&Version=2007-08-30&Operation=ItemLookup&IdType=ASIN&ItemId=$asin&ResponseGroup=Small,Images,ItemAttributes,OfferSummary,SalesRank";

// --------------------------------------------------------
// ページのキャッシュ
// --------------------------------------------------------

// 同じ検索キーに対する結果はキャッシュして使いまわす
$cache_period = 24*3600;
//$cache_period = 0; // キャッシュさせない場合。デバッグ用

// キャッシュライブラリの読み込み
$result = require_once 'Cache/Lite.php';
if ($result === false) {
echo 'PEAR Cache_Liteライブラリが'
. '呼び出せるよう設定されていません';
exit();
}
// キャッシュライブラリへ指定するオプション
$options = array(
// キャッシュ保存ディレクトリの指定
'cacheDir' => ‘http:www.okayamaweb.net/channel/amazon/cached/’,
// キャッシュ保持期間の指定
‘lifeTime’ => $cache_period,
);
// キャッシュライブラリの初期化
$cache_lite = new Cache_Lite($options);
// 検索ごとに結果をキャッシュするため、
// キャッシュIDを指定
$cache_id = ‘B000ZLS9J8′;

$cached_data = $cache_lite->get($cache_id);
if ($cached_data) {
// キャッシュが有効ならキャッシュの内容を表示
echo $cached_data;
exit();
} else {

// —————————————————-
// データ読み込み
// —————————————————-

require_once “XML/Unserializer.php”;
$xml_data = file_get_contents($req);
$parser = new XML_Unserializer(array(‘parseAttributes’ => true));
$parser->unserialize($xml_data);
$XML = $parser->getUnserializedData();

$item = $XML['Items']['Item'];
$itemattribute= $item['ItemAttributes'];
displayOne($item); // 一件分の表示

// バッファに出力したものを文字列として得る
$text = ob_get_contents();
ob_end_flush();

// 今回のcache_idでキャッシュへ保存
$cache_lite->save($text,$cache_id);
}

/** 一件分の結果を表示する関数 */
function displayOne($item) {

$asin = $item['ASIN'];
$detailpageurl = $item['DetailPageURL'];
$smallimageurl= $item['SmallImage']['URL'];
$mediumimageurl= $item['MediumImage']['URL'];
//$author=$attributes['MediumImage'];
$artist = $item['ItemAttributes']['Artist'];
$binding = $item['ItemAttributes']['Binding'];
$formattedprice = $item['ItemAttributes']['ListPrice']['FormattedPrice'];
$title= $item['ItemAttributes']['Title'];
//$format = $itemattribute['Binding'][1];

echo <<

  • アーティスト:{$artist}
  • タイトル名:{$title}
  • 価格:{$formattedprice}
  • ASIN:{$asin}
  • HTML;
    }
    ?>

      自己紹介

      岡山WEBサーチは、岡山県産および岡山に関するホームページの集う港を(ポート)コンセプトとして生まれました。

      続きを読む

      検索

    We love WordPress
    One in a Million Theme by WordPress theme