Kentaro Kuribayashi's blog

Software Engineering, Management, Books, and Daily Journal.

「iTunes ライブラリをまるごと MT にする」の続き

iTunes ライブラリをまるごと MT にする」にて作ったものの中途半端なままで放置していた iTunes Library on MT に、アマゾン・ウェブ・サービスを利用して関連情報を表示させるようにしてみました。って、まぁそんなに面白いものでもないのですが、PEARxml 関数を使う練習ということで…。

こないだも書いた通り aws.pl をあちこち調べまくったにも関わらずどうしても動かすことができなかったので、例によってヘボいスクリプティン' で対処することに。

まずは Individual Entry Archive の中でアマゾン情報を表示させたいところに以下の記述を追加。

<!-- AmazonSearchResult -->
<div class="AmazonSearchResult">
<?php
$artist = "<$MTEntryTitle$>";
include("amazon/aws4itunes.inc");
for ($i = 0; $i < count($data[Asin]); $i++) {
?>
<p><img src="<?php print($data[ImageUrlMedium][$i]); ?>" alt="" /></p>
<p><a href="<?php print("http://www.amazon.co.jp/exec/obidos/ASIN/" . $data[Asin][$i] . "/antipop-22/ref=nosim"); ?>"><?php print($data[ProductName][$i]); ?></a></p>
<?php
}
?>
</div>
<!-- /AmazonSearchResult -->

ほんでもって上で include してるのが以下に示すファイル。MTEntryTitle = $artist = アーティスト名をアマゾンの REST API に投げて KeywordSearch し、結果をキャッシュしたり、返ってきた XML をパース(Program AWS with PHP に掲載されているコードを思いっきりパクりました!)して ASIN, ProductName, ImageUrlMedium の 3 つを配列にしたりする雰囲気。

ごちゃごちゃ書いてもアレなので、とりあえず以下な塩梅になります。

とりあえずなんかそれっぽい感じにはなったみたい(スタイルをちゃんと書いてないのでダメ過ぎなページがたくさんあるけど…)。あと、わからない点や問題点がいくつか。

  • ArtistSearch という検索方法があるのだけど、なぜか結果が返ってこない…なんで? 仕方がないので KeywordSearch で対応した。
  • jp とそれ以外を区別する方法がアレ過ぎ。記号を抜いた $artist が英数のみなら locale を無指定(つまり、デフォルトの us )、違ったら locale を jp へ。そんなんじゃダメだろ…。
  • mode を music にしてるのに、locale=us なら CD が出てくるけど、locale=jp だと CD は出てこずに本とかそんなんばっか。なんで? 試しに music-jp でもやってみたけど、結果は同じだった…。
  • ていうか、XML のパースが適当かつ決打ち過ぎ…。

時間もないので、未解決のまま終了…。