プチアーティストリンク

lastfm_info_xml.phpを使ってプチアーティストリンクを作ってみました。AmazonやYouTubeと連携させると面白いかも。

http://labs.makotokw.com/s/sandbox/lastfm
lastfm_info_xml.phpでマルチバイト文字を含むアーティスト名を参照させると、内部でlastfmから取得したxmlをキャッシュファイルとして書き込むところで不具合が発生しました。URLエンコードされたファイル名をfopenして、fputすると何故かファイル名はURLデコードされたファイル名で保存されてしまい、ファイルに保存したのちにDOMで開こうとするのですが、当然URLエンコードしたファイル名を指定してもそのファイル名では存在しないのでエラーになります。

面倒なので、PEARのCacheLiteのようにmd5でダイジェストにしたファイル名で保存することにしました。キャッシュファイルを作るところで(227行目あたり)で

# Set the cache filename.
$cacheid = md5($username.$artist.$track);
$cachefile = $cachefileprefix . $filtlist . '.' . $cacheid . "." . ".xml";

としました。

いじょ。