foobar2000のPlayback Statisticsを編集するマクロ(1)

foobar2000のPlayback Statisticsのデータを編集するマクロ

えらい久しぶりに、foo_playcount.dllをアップデート(Verなんぼかわからん。2011年のヴァージョンみたい。)したら、どうも再生記録の保存方法が変わったようで、これまでの再生記録が全部リセットされてしまった。

f:id:akashi_keirin:20190317175730j:plain

あれだけ聴き倒した「暗闇にドッキリ!」が一度も聴いたことがないことになっている……。

これまでは、PlaybackStatistics.datというナゾのファイルに記録されていたので、このファイルをバックアップするようにしていたが、これはこれで音楽ファイルのフルパスが変わると全部パアになるというシロモノで、ひとたび記録を始めると、ドライブ名が変わっただけでそれまでの記録がパアになっていたのだった。

新しい(っつっても10年近く前のリリースだけどw)foo_playcount.dllでは、曲の特定にファイルパスを使わなくなったとのこと。楽曲ファイルのファイルパスが変わっても追随してくれるらしいので、Portable Modeのユーザには有難い限り。しかし、今まで培ってきた再生記録が全部パアになるというのはツラい……。

どうにかならないものか、と調べてみた。

新機能 XMLによるエクスポート

どうも、新しいfoo_playcount.dllでは、再生記録をエクスポート/インポートできるらしい。

さっそく試してみる。

f:id:akashi_keirin:20190317175735j:plain

アルバム全体を選択した状態で右クリック。

f:id:akashi_keirin:20190317175739j:plain

「Playback Statistics」→「Export statistics to XML...」の順にたどってクリックすると、

f:id:akashi_keirin:20190317175742j:plain

こんな確認画面が出るので[OK]をクリック。

f:id:akashi_keirin:20190317175746j:plain

テキトーにファイル名を付けて保存。

出来上がったXMLテキストエディタで開いてみると、

f:id:akashi_keirin:20190317175749j:plain

このとおり。

わけのわからない文字の羅列だけれど、実は曲順通りに並んでいる。

f:id:akashi_keirin:20190317175753j:plain

真ん中の部分をコピーして、

f:id:akashi_keirin:20190317175758j:plain

Excelに貼り付けると、

f:id:akashi_keirin:20190317175801j:plain

このとおり、各セルに分けて貼り付けてくれる。便利だねえ。

ここまでで準備は完了。

後は、必要なデータをfoobar2000が読み取れる形に整形して、再度foobar2000に読み込ませれば良い。

XMLの中身

たとえば、「暗闇にドッキリ!」の場合、初期状態のXMLは次のようになっている。

<entry id="7ac1f8992d383682" count="0" added="131971670207943892">

全然わけがわからないが、「ID=」の後ろに書いてある16文字の英数字「7ac1f8992d383682」が「暗闇にドッキリ!」のことを表している。まだ一度も再生されていないことになっているので、「Count=」の値も「0」になっている。(「Added=」は、オモテに出て来ないパラメータなので、2019年1月1日0時00分00秒に相当する投げやりな数値をセットしている。)

で、これが、

  • 再生回数は28
  • 初めて再生されたのが2013年11月25日の20時47分20秒
  • 直近の再生日時が2019年3月17日の14時32分23秒
  • Ratingは5

の場合にどうなるのかというと、

<entry id="7ac1f8992d383682" count="28" added="131907872960000000" rating="234" lastplayed="131972743430000000" firstplayed="130298536400000000">

こうなるのである。なっが!

要素ごとにバラして並べておく。

ID="7ac1f8992d383682"
Count="28"
FirstPlayed="130298536400000000"
LastPlayed="131972743430000000"
Added="131907872960000000"
Rating="234"

こうして並べてみると、人間に解読可能なのは再生回数を表す「Count」のみ……。

ただ、「FirstPlayed」、「LastPlayed」、「Added」を表現するための数値の求め方も、「Rating」の値も既に先人が解読済みなので、なんとかなるのだ。

tkland.kim

後は、任意の値をセットしたXMLファイルを生成するだけ。

その際にVBAの力を借りることにする。

今回はここまで。

結局、1行もコード書いてないw

おわりに

ところで、これ、誰得なのだろう……。