AudioscrobblerのRecent Tracksをはてなのサイドバーに表示する
先日先走ってしまったこちらですが。
http://d.hatena.ne.jp/nitsuji/20050424#1114354283
よくよく調べてみたらはてなの「RSSモジュール」を使ってできると判明。
「管理」-「デザイン」からページのヘッダとかフッタに以下の記述を追加するだけ(nitsujiのところにはユーザー名を入れる)。
<hatena name="rss" url="http://ws.audioscrobbler.com/rss/recent.php?user=nitsuji">
こうするとRecent TracksのRSS2.0が取得できるので、RSSモジュールがtitleとlinkを抜き出して表示してくれます。
注意点としてはAudioscrobblerで取得できる以下のRDFは使用しちゃダメということ(Last.FMのRDFリンクは以下のRDFを参照してる)。
http://ws.audioscrobbler.com/rdf/history/nitsuji
これだと各曲がitemのtitle要素ではなくdescription要素の値となるために何も表示されないという悲惨な結果になります。
以下のRSSモジュールのdescription表示拡張を使用すれば解決できますがわざわざこれを使用する理由はない(し、本来の使い方じゃない)。
rssモジュールのdescription表示拡張について - はてなダイアリー日記
ただ、再生しないでしばらく経つとRSSからitemがなくなってしまうので、自宅サーバでキャッシュすることにしました。
itemがあるときはAudioscrobblerから取得してファイルに保存。ないときは何もしない。というプログラムをcronで30分おきに実行します。
はてなからは自宅サーバーに保存してあるRSSを参照。よってサーバーが落ちたら終わりですが。
目下勉強中のperlで書きました。
#!/usr/bin/perl -w use strict; use LWP::Simple; use XML::RSS; my $url = shift or die "no url\n"; my $file = shift or die "no file\n"; my $xml = get($url); my $rss = XML::RSS->new(); $rss->parse($xml); if (@{$rss->items}) { $rss->save($file); }
AudioscrobblerのRecent TracksにはLast.FMで再生した曲と、ローカルで再生した曲の両方が反映されます。
ローカルにはプラグインが必須(というかLast.FMを使うのに必要)。
-
- -
参考情報
http://www.audioscrobbler.com/development/webservices.php
-
- -
というわけで、とりあえず望んでいたことはできたわけですが。
これって激しく自己満足の世界ですね。
まあ、要はプログラムを書きたくてうずうずしているわけです。
仕事も物足りないし。