aserveのクライアントを使ってlast.fmの自分のベストトラックのXMLをとってくる。
Common Lisp と 日本語 と 文字コードによるとバイナリでゲットしてエンコードすべしとのことだったのでそうした。
(asdf:oos 'asdf:load-op 'aserve)
(setq result (net.aserve.client:do-http-request
"http://ws.audioscrobbler.com/2.0/user/kzfm/toptracks.xml"
:format :binary))
(sb-ext:octets-to-string result :external-format :utf8)
結果。
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<toptracks user=\"kzfm\" type=\"overall\">
<track rank=\"1\">
<name>Imaginary Folklore</name>
<playcount>169</playcount>
<mbid></mbid>
<url>http://www.last.fm/music/Clammbon+By+Nujabes/_/Imaginary+Folklore</url>
<streamable fulltrack=\"0\">0</streamable>
<artist>
<name>Clammbon By Nujabes</name>
<mbid></mbid>
<url>http://www.last.fm/music/Clammbon+By+Nujabes</url>
</artist>
</track>
<track rank=\"2\">
<name>アンパンマンのマーチ</name>
<playcount>77</playcount>
こんな感じで、割と簡単にできた。あとはパースすればよいですな。