Amazon Web Serviceで遊ぶ(1)
「書名羅列スクリプトに著者名が入ってないのは何故?」
と聞かれました。
これは別に深い考えがあった訳でもなんでもなくて、元々MT-ISBNプラグイン用のBookmarkletを使いまわしてるので、Bookmarkletが書名とISBN番号しか引いて来ない、ただそれだけの理由です(^_^;)
ということでBookmarkletのJavaScriptを改造すればAmazonのウェブページからさらに情報を引っ張ってくることも出来るんすけども、ここはひとつ勉強のため、Amazon Web ServiceからSOAP経由でデータを引っ張る方法を試してみる事にしました。
PHPでSOAPを使うにはNuSOAPというライブラリを使うのがラクらしいので、これを(感謝を捧げてから)貰って来ます。今回頂いて来たバージョンは、1.76。
また、Amazon Web Serviceを使うためにはAmazonのwebサービスから登録してデベロッパー・トークン(無料)を貰う必要があります。大して難しくはありませんが、手続きもドキュメントも全部英語です。面倒くせ〜(^_^;)
ココの環境だとPHP内部エンコーディングEUC/出力文字コードEUCになるんで、nusoap.phpの
なトコロ(たぶん2箇所)を
に書き換えます。取り敢えず以上で準備完了。
テストはこんなスクリプトで行ないました。
//SOAPを使う準備
include("nusoap.php");
$soapclient = new soapclient("https://soap.amazon.co.jp/schemas3/AmazonWebServices.wsdl", true);
$proxy = $soapclient->getProxy();
//投げるパラメータを作る
$params = array(
'asin' => '4757512260',
'page' => '1',
'mode' => 'books-jp',
'tag' => 'アソシエイトID',
'type' => 'lite',
'sort' => '+daterank',
'devtag' => 'デベロッパートークン',
'locale' => 'jp'
);
//リクエストを投げる
$result = $proxy->AsinSearchRequest($params);
//返り値をeucに変換
mb_convert_variables("euc-jp", "utf-8", $result);
//返り値を表示
print_r ($result);
?>
SOAPで帰ってくる返り値はUFT-8なので、最後にEUC-JPに変換する処理を噛ませてます。日本語のキーワードを投げる場合は投げるキーワードの処理にも気を使う必要がありますけど、今回投げるのはASINコード
ココとか見ると本の戻り値のソート順は
- +pmrank
- +salesrank
- +reviewrank
- +pricerank
- +inverse-pricerank
- +daterank
- +titlerank
- -titlerank
の8とおり指定出来るようです。今回はASIN検索なので一意的に結果が求まる→並び替えの必要は無いハズですが、なんとなく(^^;日付順に並べる指示をしてみました。