Going My Way の 'Windows版? iTunesとiPod' で紹介されていた Windows 用メディアプレイヤー、Quintessential Player (QCD) を使ってみています。QCD のスキンの iTunes を使って、ご覧のような見た目になりました。日本語の Language Plug-Ins を入れて日本語表示も問題ありません。
同じく Going My Way の '現在聞いている曲を表示する「Now Playing」' で紹介されていた NowPlaying という QCD プラグイン、これは現在自分が QCD で聴いてる曲のアーティスト名やプレイリストをファイルに書き出す機能をアドオンしてくれます。NowPlaying と SSI やその他を組み合わせて、このサイトのサイドバーにプレイリストを表示してみました。Going My Way の kengo さんに同じく、Amazon アフュリエイトの検索結果へ自動でリンクさせてます。
NowPlaying の出力は MovableType のようにテンプレートを編集することでカスタマイズできます。テンプレートを土台に、曲が変更されるたびにプレイリストがファイルに書き出されます。
このファイルをどうやって MovableType のトップページに読み込ませるかですが、Going My Way では Change File Uploader というソフトを利用する方法が紹介されています。
僕は自宅サーバーで運用している利点を生かして、Samba を利用しLAN経由でサーバのファイルシステムをネットワークドライブに割り当てて、そこに書き出すよう NowPlaying から設定しました。楽ちんです。
あとは、定期的に書き出されるファイルをトップページから SSI で Include してやれば完了、といきたいところでしたが、日本語の出力は Shift_JIS でしか生成できないようで、僕のサイトの文字コード(EUC-JP)とバッティングしてしまい、日本語のプレイリストが化けてしまいました。
なので、Shift_JIS → EUC-JP に変換するフィルタを書いて、SSI の外部コマンド実行命令を使って、それを実行してます。ついでに、Amazon のリンクの中に日本語が埋め込まれた場合に URL エスケープする処理も加えました。と、言っても 15 行程度のその場しのぎ & お粗末なスクリプトです。
#!/usr/local/bin/perl
use strict;
use Jcode;
use CGI;
my $q = new CGI();
while (<>) {
my $str = Jcode->new($_)->euc;
$str =~
s/(\&keyword=)(.*?)(\&)/sprintf("%s%s%s", $1, $q->escape($2), $3)/eg;
print $str;
}