AZ::blog Home >> 新AMAZ君EX(amazon Product Advertising API対応版)
28
Jun
2009

新AMAZ君EX(amazon Product Advertising API対応版)

>>>新しいバージョン2.xへ(2009/10)

Amazon アソシエイトからメールが来て、
「Product Advertising APIというのに変わったので、新しい認証方式に対応しましょう。
8月15日を過ぎると、今のやり方では表示されなくなっちゃうよ」
とまたしても一方的な仕打ち。

かくして、amaz君exも、新しい認証に対応することに。
以下のサイトで公開されていたコードに助けていただきました。ありがとうございました。
Amazon Product Advertising API への対応(PHP版) – もやし日記

PHP5だと比較的簡単ですが、それでも今までよりかはだいぶ難しくて、プログラマじゃない人にはかなり敷居は高そう。
うちは、アクセスのたびにPHPで動的に書き出すので、元のコードを書き換えさえすれば、全部が置き換わりますが、
すでに静的に書き込んである分があると、ひとつひとつ手で書き直さないとダメなのかなあ。。

<?php
/*
Plugin Name: AMAZkunEX
Plugin URI: http://www.overcube.com/wordpress/
Description: うちのブログにアマゾンリンクをつけるプラグイン。
Author: overQ
Version: 1.2
Author URI: http://www.overcube.com/wordpress/
*/

// RFC3986 形式で URL エンコードする関数
function urlencode_rfc3986($str)
{
    return str_replace('%7E', '~', rawurlencode($str));
}

//新しいamazonの認証、ふたつめの引数はxslの番号を指定
function amaz_url($amaz_val,$xslt_numb) {

// Access Key ID と Secret Access Key は必須です
$access_key_id = 'ここに自分のIDを入れます';
$secret_access_key = 'ここに自分のキーを入れます';

// 基本的なリクエストを作成します
// - この部分は今まで通り
$baseurl = 'http://xml-jp.amznxslt.com/onca/xml';
$params = array();
$params['Service']        = 'AWSECommerceService';
$params['AWSAccessKeyId'] = $access_key_id;
$params['Version']        = '2005-10-05';
$params['Operation']      = 'ItemLookup';
$params['IdType']    = 'ASIN';
$params['ItemId']       = $amaz_val;
$params['ResponseGroup']    = 'Large';
$params['AssociateTag']    = 'azblog-22';
$params['ContentType'] = 'text/html';
$params['Style'] = "http://www.overcube.com/wordpress/wp-content/plugins/amazkun/simple{$xslt_numb}.xsl";     // ← 文字コードは UTF-8

// Timestamp パラメータを追加します
// - 時間の表記は ISO8601 形式、タイムゾーンは UTC(GMT)
$params['Timestamp'] = gmdate('Y-m-dTH:i:sZ');

// パラメータの順序を昇順に並び替えます
ksort($params);

// canonical string を作成します
$canonical_string = '';
foreach ($params as $k => $v) {
    $canonical_string .= '&'.urlencode_rfc3986($k).'='.urlencode_rfc3986($v);
}
$canonical_string = substr($canonical_string, 1);

// 署名を作成します
// - 規定の文字列フォーマットを作成
// - HMAC-SHA256 を計算
// - BASE64 エンコード
$parsed_url = parse_url($baseurl);
$string_to_sign = "GETn{$parsed_url['host']}n{$parsed_url['path']}n{$canonical_string}";
$signature = base64_encode(hash_hmac('sha256', $string_to_sign, $secret_access_key, true));

$url = $baseurl.'?'.$canonical_string.'&Signature='.urlencode_rfc3986($signature);

return($url);

}

//フィルタはここから
function amazkunex ($content) {

//本・音楽・映画でsltの整形を使い分ける。
    $arr_amazkun = array("amazkunBook", "amazkunMusic", "amazkunMovie");

	for($i=0; $i<=2; $i++)
	{
 		$amaz_pattern = "<".$arr_amazkun[$i].">(.*)<\/".$arr_amazkun[$i].">";
			if (preg_match_all ( "/".$amaz_pattern."/", $content, $matches )) {
				foreach( $matches[1] as $amaz_val ) {
				           $amaz_nakami = file_get_contents(amaz_url($amaz_val,1));
				           $okikae = '<div class="amaz">'.$amaz_nakami.'</div>';
				           $content = str_replace('<'.$arr_amazkun[$i].'>'.$amaz_val.'</'.$arr_amazkun[$i].'>',$okikae,$content);
				}
   			}
	}

return $content;

}

add_filter('the_content', 'amazkunex',6);

?>

1Q84 BOOK 1
村上 春樹
¥ 1,890 / 新潮社
( 2009-05-29 )
在庫あり。

トランスフォーマー スペシャル・コレクターズ・エディション (2枚組) [Blu-ray]
監督:マイケル・ベイ
出演:シャイア・ラブーフ
¥ 4,935 / パラマウント ホーム エンタテインメント ジャパン
( 2009-05-22 )
在庫あり。

スリラー 25周年記念リミテッド・エディション(DVD付)
マイケル・ジャクソン
¥ 3,570 / SMJ(SME)(M)
( 2008-02-20 )

関連する記事

コメント