2007 . 02 . 22
YouTubeやFlickrと共に最も成功したWebサービスとして、もはや説明の必要もないほど有名になったLast.fmですが、ソーシャルコミュニティー的要素を最大限に生かしたことがその成功の要因といえます。
Last.fmのサービスを利用する方法としては専用のプレーヤーをインストールしてそのプレーヤーで聴く方法と、サイト内のFlashプレーヤーで聞く方法があります。
Last.fmのサービスは音楽の視聴を目的としているというよりも、ユーザーコミュニティーがその核になっているため、音楽の再生以外にいろいろなサービスを付加させるため、単なるインターネットラジオのような単純な造りになっていません。
しかし、中には純粋に音楽を聴くだけで、もっと気軽にSHOUTcastを聞くような感覚で自分の好きな環境でLast.fmを楽しめたらいいのにと感じている人も少なくないと思います。
今回はWinampをはじめとして、ストリーム再生ができるメディアプレーヤーでLast.fmを受信する方法を紹介します。
(Last.fmは完全会員サービスなので会員登録済みであることが前提です)
まず、自分のパスワードをMD5ハッシュに変換します。こちらのサイト
Rednoizeなどで簡単に調べることができます。
次に下記URLにユーザー名とパスワードのMD5を挿入してブラウザでアクセスします。
http://ws.audioscrobbler.com/radio/handshake.php?version=1.1.1&platform=linux&username=ユーザー名&passwordmd5=パスワード&debug=0
すると次のようなレスポンスがあります。
session=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
stream_url=http://streamer2.last.fm:80/last.mp3?Session=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
subscriber=0
framehack=0
base_url=ws.audioscrobbler.com
base_path=/radio
このsession=に続く文字列があなたのセッション番号です。そして、接続する基本的なURLがstream_url=に続くURLで、Winampなどのメディアプレーヤーでここにアクセスすれば再生されるようになります。
Last.fmは個々のチャンネル自体に固有のURLがあってそこに接続するような一般的な方法ではなく、ユーザーのリクエストに応じ、動的に生成しているので、どのチャンネルでもユーザーがアクセスするのは常に自分のストリームURLということになります。
次にチャンネルの設定方法です。
Last.fmのチャンネルには3つグループがあり、それぞれ以下のURLになっています。
- neighbour station - lastfm://user/(username)/neighbours
- Similar Artist stations - lastfm://artist/(Artist)/similarartists
- Tag radio - lastfm://globaltags/(Tag)
以下のURLに先ほどのセッション番号とurl=に続けて上のURLを指定します。
http://ws.audioscrobbler.com/radio/adjust.php?session=セッション番号&url=lastfm://globaltags/guitar&debug=0
上の例では「globaltags」グループの「guitar」で指定しています。ここにブラウザでアクセスすると以下のようなレスポンスがあり、サーバー側で再生内容の再構築が行われます。
response=OK url=lastfm://globaltags/guitar
次に再生情報の取得です。
http://ws.audioscrobbler.com/radio/np.php?session=セッション番号&debug=0
上にアクセスすると現在再生中の曲情報が以下の形式で出力されます。
price=
shopname=
clickthrulink=
streaming=true
discovery=-1
station=Global Tag Radio: guitar
artist=John Mayer
artist_url=http://www.last.fm/music/John+Mayer
track=New Deep
track_url=http://www.last.fm/music/John+Mayer/_/New+Deep
album=Heavier Things
album_url=http://www.last.fm/music/John+Mayer/Heavier+Things
albumcover_small=http://images.amazon.com/images/P/B0000ALSDR.01._SCMZZZZZZZ_.jpg
albumcover_medium=http://images.amazon.com/images/P/B0000ALSDR.01._SCMZZZZZZZ_.jpg
albumcover_large=http://images.amazon.com/images/P/B0000ALSDR.01._SCMZZZZZZZ_.jpg
trackduration=249
radiomode=1
recordtoprofile=1
次にコントロールに関してですが、再生、停止など基本的なものはプレーヤー任せとして、それ以外に以下にアクセスすることにより、いくつかのコマンドを送ることができます。
http://ws.audioscrobbler.com/radio/control.php?session=セッション番号&command=ban&debug=0
上ではBanコマンドを送っています。同様にcommand=ban部分をcommand=loveに変えれば、loveコマンドを送ったり、command=skipでスキップコマンドを送ったりすることもできます。(スキップさせるには単に再接続するという手もあり、この方がレスポンスが早いような気もする)
もちろんここで送ったBan/Loveのコマンド情報はあなたの情報として蓄積されていきます。
さて、いかがでしょう。
個人的には、「ただ単に聞くだけ」という用途では、最近の専用プレーヤーは以前ほど重くないことや安定性、利便性を考えると、このようなハックを駆使して聞くことは有意義かは分かりません。
しかし、これをもとにシンプルなWidgetやスキンを作ったり、また、腕に覚えのある方はAudioscrobblerのAPIなどと併用して、GUIアプリケーションやWebアプリケーションを作ったりする素材として、十分に活用できる情報ではないでしょうか。
引用元: Ein Blog
[追記 : 2007.07.30]
セッション番号やURLは恒久的(変わらぬ値)ではないようです。
どのような周期で変更されるかは不明ですが、接続エラーが起こるようなときはまず、セッション番号やURLを再度チェックしてみるとよいでしょう。
大変役立つ情報ありがとうございます。しかし、
文字を二つ以上組み合わせる場合のやり方がどうしてもわかりません。
たとえば、Johann Sebastian Bachを聞きたい場合、試してみてもうまくいかないのです。
http://ws.audioscrobbler.com/radio/adjust.php?session=xxxxxxx&url=lastfm://artist/johann sebastianbach/similarartists&debug=0
「bach」だけならうまくいくのですが、複数組み合わせるとなると、&でも無理でした。この場合、どうすれば聞くことができるのでしょうか?