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の

$decode_utf8 = true

なトコロ(たぶん2箇所)を

$decode_utf8 = false

に書き換えます。取り敢えず以上で準備完了。

テストはこんなスクリプトで行ないました。

<?php

//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コード(Amazon Standard Identification Number。書籍の場合はISBNコードと等しい)なので、こっちは生のまま放り投げて大丈夫。

ココとか見ると本の戻り値のソート順は

  1. +pmrank
  2. +salesrank
  3. +reviewrank
  4. +pricerank
  5. +inverse-pricerank
  6. +daterank
  7. +titlerank
  8. -titlerank

の8とおり指定出来るようです。今回はASIN検索なので一意的に結果が求まる→並び替えの必要は無いハズですが、なんとなく(^^;日付順に並べる指示をしてみました。