WebScrap

January 7, 2010

foobar2000にLast.fmの曲情報を表示する

foobar2000のELPlaylistにLast.fmの曲情報を表示

Last.fmにはお気に入りの曲をLoveトラックに登録できる機能があるが、とりあえず付けてはいるものの、今ひとつ使い道が無かった。しかしsynchronise last.fm playback statsを使えば、Last.fmに記録されている曲情報(Loveトラック・再生回数)を取得し、Title Formatとして出力することができる。


必要なコンポーネントとファイル

導入の手順

  1. Last.fmから自分のライブラリ情報を取得するにはAPIキーが必要になるので、API – Last.fmから発行する。
  2. Soft PlaylistsのLast.fm User、Last.fm Passwordを設定する。
  3. playcount sync.zipを解凍して、中にあるscript、imagesフォルダをfoobar2000のインストールフォルダにコピーする。
  4. WSH panel modを配置してcode.txtをインポートし、ユーザーネームとAPIキーを設定する。 

 

これでLast.fmから再生中の曲情報を取得して、ファイルのタグに直接、またはCustom Databaseで外部データベースに記述される。

外部データベースを使う場合はCustom Databaseで設定する項目が多いので、同梱してある設定ファイル(foo_customdb.dll.cfg)を使うように進められている。しかし、コンポーネント別に設定ファイルを生成するのはfoobar2000 v1からなので、それ以前のバージョンでは手動で項目の設定が必要になる。

 

まずFieldsタブに以下の値を作る。
LFM_U・T・H・THは再生回数の値で、それぞれ一・十・百・千の位になる。

Display Name Key (Custom)
LASTFM_LOVED_DB LASTFM_LOVED_DB %artist%,%title%
LFM_U LFM_U %artist%,%title%
LFM_T LFM_T %artist%,%title%
LFM_H LFM_H %artist%,%title%
LFM_TH LFM_TH %artist%,%title%

次にActionタブに以下の値を作る。
Updateの項目は全てContext menuになる。

Display Field Set Value
Customdb Love 1 LASTFM_LOVED_DB 1
Customdb Love 0 LASTFM_LOVED_DB  
CustomdbU 0 LFM_U 0
CustomdbU 1 LFM_U 1
CustomdbU 2 LFM_U 2
CustomdbU 3 LFM_U 3
CustomdbU 4 LFM_U 4
CustomdbU 5 LFM_U 5
CustomdbU 6 LFM_U 6
CustomdbU 7 LFM_U 7
CustomdbU 8 LFM_U 8
CustomdbU 9 LFM_U 9
CustomdbU Erace LFM_U  
CustomdbT 0 LFM_T 0
CustomdbT 1 LFM_T 1
CustomdbT 2 LFM_T 2
CustomdbT 3 LFM_T 3
CustomdbT 4 LFM_T 4
CustomdbT 5 LFM_T 5
CustomdbT 6 LFM_T 6
CustomdbT 7 LFM_T 7
CustomdbT 8 LFM_T 8
CustomdbT 9 LFM_T 9
CustomdbT Erace LFM_T  
CustomdbH 0 LFM_H 0
CustomdbH 1 LFM_H 1
CustomdbH 2 LFM_H 2
CustomdbH 3 LFM_H 3
CustomdbH 4 LFM_H 4
CustomdbH 5 LFM_H 5
CustomdbH 6 LFM_H 6
CustomdbH 7 LFM_H 7
CustomdbH 8 LFM_H 8
CustomdbH 9 LFM_H 9
CustomdbH Erace LFM_H  
CustomdbTH 0 LFM_TH 0
CustomdbTH 1 LFM_TH 1
CustomdbTH 2 LFM_TH 2
CustomdbTH 3 LFM_TH 3
CustomdbTH 4 LFM_TH 4
CustomdbTH 5 LFM_TH 5
CustomdbTH 6 LFM_TH 6
CustomdbTH 7 LFM_TH 7
CustomdbTH 8 LFM_TH 8
CustomdbTH 9 LFM_TH 9
CustomdbTH Erace LFM_TH  

そしてWSH panel modで外部データベースへの記述を有効にし、foobar2000を再起動すれば、customdb_sqlite.dbに取得した曲情報が記述される。

ファイルのタグに記述する場合のTitle Format

  • Loveトラック
    $ifequal(%LASTFM_LOVED%,1,♥,)
  • 再生回数
    %LASTFM_PLAYCOUNT%

外部データベースに記述する場合のTitle Format

  • Loveトラック
    $ifequal(%LASTFM_LOVED_DB%,1,♥,)
  • 再生回数
    $replace(%LFM_TH%%LFM_H%%LFM_T%%LFM_U%,?,)

 

WSH panel modには再生中の曲がLoveトラックならばハートアイコンが表示され、そうでなければ再生中の曲をLoveトラックにするボタンが表示される。

なお、取得した曲情報が書き込まれるのは初期設定では曲再生中の0:10のタイミングなので、変えたい場合は次のコードの2行目の数値をいじればよい。

function on_playback_time(time) {
 if(t.eval() == 10) {
  if(old_userloved != 1 && auto_love == 1 && auto_love_condition.eval() == 1) {
   fb.trace("Playcount sync: Auto-love is on. Triggering soft_playlists....");
   fb.RunContextCommand(love_command);
  }
  sync();
 }
}

 

今回はsynchronise last.fm playback statsを使うためにSoft Playlistsを入れたが、他にもLast.fmから曲情報を取得して様々なプレイリストを作成する機能などもあるので、単体でも優秀なコンポーネントだ。
また、有料メンバーならばLast.fm Radioを有効に使えて、更に連携を強化できるだろう。

2 Coment:

かりんとー said...

foobar2000のカスタマイズにFirefoxの設定情報、どれもとても洗練されて勉強になりました
foobar2000への移行を考えている初心者なのですが、code.txtというのは外部からダウンロードして用意するものなのでしょうか?それとも自身で作成するものなのでしょうか?
もしよければ教えていただけませんでしょうか?

Anonymous said...

これは便利ですね。参考にします。もっと分かり易ければ…なお

Post a Comment