吉日備忘録

ちょっとマイナーでも、誰かの役に立ちそうなら書いてくスタンス。

MusicBeeなどの過去の再生履歴をLast.fmにScrobbleする方法

MusicBeeには、これまでに再生した楽曲の統計を取る機能があります。アルバム数や合計再生時間の他、それぞれの再生回数などなど。

今回は、その統計をLast.fmへ反映する際に色々と手こずったため、備忘録としてここに記していこうと思います。

ちなみに本解説ではMusicBeeを主軸としていますが、その他のメディアプレーヤーでも、ライブラリをファイルとして書き出せる機能があれば応用可能な場合があります。他のプレーヤーを使っている方も、ぜひご一読ください。

あらすじ

と、その前に。私がこれに至るまでの経緯を書いておきます。
さっさと方法を教えろという方は、次のセクションへどうぞ。

 

Last.fmという便利なサービス知ったのはつい最近のこと。そう、なんとなく5chのMusicBeeスレを眺めていたときでした。

音楽に特化したSNSという体裁のようですが、メディアプレーヤーと連携することで再生履歴を記録することができる機能が備わっています。
もっぱらこのために利用している人も多いのではないでしょうか。

私はそうです。培ってきた統計を目の当たりにして愉悦に浸るほどウキウキすることはありません。みなさんもきっとそうでしょう。

 

MusicBeeでは標準で連携機能があるため目にしたことはあったものの、全く興味はありませんでした。3年前の自分に言い聞かせてやりたいですね。「いいからとりあえず連携しておけ」と。そうすれば1日溶かすことはなかったのに。

そしていざ使ってみると、まさに私が探し求めていたものだったのです。

 

メディアプレーヤーの統計は基本的にローカルで保存されるもので、バックアップを取っていなければ簡単に消失してしまうもの。しかし、Last.fmはサーバーに保存されるため、データセンターが爆破でもされなければ消えてしまうことはありません。細かい統計は取れないものの、再生履歴だけで私には十分です。欲は張るな。

私のライブラリの大多数を占める東方アレンジ曲はだいたい登録されているし、SNSなのでそれを共有できるのは魅力の一つです。共有する人はいませんが。

 

書きたいことを書いていたらあらすじだけで結構な長さになってしまったので、
ここからは手短にいきます。

MusicBeeに統計機能あるんだからなんとか移せないかな、と思ったのが発端で、情報は少ないものの一応できそうな雰囲気だったため、reddit等を漁りながら試行錯誤。しかし提示されている方法がうまくいかず、単純なことに気づかず完全にハマっていた…。

という感じです。人間、焦っているときは些細なことに気づかないものなんですよね。
ではでは、ようやく本編へと参ります。

手順

おおまかな流れは次のとおりです。

  1. MusicBeeの使用言語を英語に変更する
  2. MusicBeeのライブラリをXML形式で書き出す
  3. 書き出したファイルをScrobbleソフトで読み込み、情報をアップロードする
  4. 必要に応じて、使用言語を元に戻す

字面では難しそうですが、実際はただポチポチしてちょっとカタカタするかもってだけです。
画像なしで説明されたら混乱するかもしれませんが、そんなことはないのでご安心を。

今回使用したソフトのバージョン情報を一応記しておきます。

  • MusicBee - v.3.3.7261
  • Last.fm-Scrubbler-WPF Beta - v.1.22.0.0

MusicBeeの使用言語を英語に変更する

まずは英語に変更します。

なぜかというと、日本語のままでは次のステップで説明するライブラリファイルの書き出しの際、ファイル内の重要な箇所が英語ではなく日本語で出力されてしまうからです。これは後述のソフトでファイルを読み込むときに問題となるので、絶対に変更しましょう。

なお、英語に変更できない問題等がある場合はこちらを参照。

f:id:otokoume93:20200518043223p:plain

使用言語を英語に変更

MusicBeeを開いたら設定をオープン。
ウィンドウ左上の「三」マーク > 「設定」、またはCtrl+Oのショートカットキーで開けます。

すると上記画像のように設定ウィンドウが現れるので

  1. 「言語」のプルダウンメニューを開く。
  2. リストから「English」を選択。
  3. 右下の「適用」ボタンが「再起動」に変わるのでクリック。

これで英語に変更することができました。

日本語に戻す方法

日本語に戻す際はこの逆をやればいいのですが、一応説明しておきます。ただし、一連の作業を終えるまでは日本語に戻さないでください。

f:id:otokoume93:20200518044344p:plain

使用言語を日本語に変更

先程のように設定を開きます。ウィンドウ左上のメニューから開く場合は、
「Edit Preferences」をクリックしてください。

設定ウィンドウが現れたら

  1. 「language」のプルダウンメニューを開く。
  2. リストから「日本語」を選択。
  3. 右下の「Apply」が「Restart」に変わるのでクリック。

MusicBeeのライブラリをXML形式で書き出す

まずはライブラリをファイルとして書き出します。

ここでのライブラリとは、プレーヤー内に取り込まれた楽曲や作成したプレイリストの構造などを保存しているものを言います。これに再生履歴も含まれているというわけですね。

手順は次の通り。

f:id:otokoume93:20200518045921p:plain

MusicBeeからライブラリファイルを書き出す設定

先程のように設定を開きます。

  1. すると上記画像のような設定ウィンドウが現れるので、左の一覧から「Library」を選ぶ。
  2. 「export the library as an iTunes formatted XML file」にチェックを入れる。
  3. 右下の「Save」をクリックして設定終了。 

MusicBeeを閉じたときにライブラリファイルが保存されるため、一度終了します。

ファイルの行方

さて、ファイルはどこに保存されたのかというと、Windowsのミュージックフォルダ内です。基本は下記ディレクトリに保存されていますが、標準のミュージックフォルダーのディレクトリを変更している場合はこの限りではありません。
<ユーザー名>のところは各自で変更してください。

C:\Users\<ユーザー名>\Music\MusicBee

f:id:otokoume93:20200518022100p:plain

MusicBeeの書き出しファイルの保存先を開く

探すのが面倒という方は、Win+Rを押し、開いたウィンドウに上記アドレスをコピペ。
ユーザー名を自身のものに変えたら「OK」を押します。

f:id:otokoume93:20200518025549p:plain

書き出されたライブラリファイル

エクスプローラーが開いたら「iTunes Music Library.xml」があることを確認します。

これ、名前から察せると思いますが、iTunesで使うことができます。中身の形式はほとんど同じものなんです。そのため、iTunesの方に取り込んでしまえばプレイリストなどを共有することができます。

まあ私はAppleバイスを持ってないので使いませんけどね。

他のメディアプレーヤーでも同様の機能があったり、もしくはiTunesのライブラリを読み込むことができたりするので、MusicBeeから乗り換える際には役立つかもしれません。

書き出したファイルをScrobbleソフトで読み込み、情報をアップロードする

いよいよ終盤です。

ソフトをダウンロード

ここでは、Last.fmへ情報を送信する「Last.fm-Scrubbler-WPF」という専用ソフトを使うため、そのダウンロードが必要となります。ダウンロードはこちらから。

github.com

 

f:id:otokoume93:20200518053008p:plain

Last.fm-Scrubbler-WPFの配布先

配布先で、少し下に行くと「Assets」があるのでそこをクリック。
Last.fm-Scrubbler-WPF-Beta-x.xx.zip」をクリックすることでダウンロードできます。執筆時のバージョンはBeta 1.22ですが、今後更新されても同様にダウンロードできるはずです。

ダウンロードが完了したら解凍しておきましょう。

起動時の注意

解凍したフォルダの中にある「Last.fm-Scrubbler-WPF.exe」を探し、起動します。

f:id:otokoume93:20200518060211p:plain

初回起動時の警告

Windows 10で初めて起動すると、画像のような表示が出ると思います。これはアプリの安全性を確認できない場合にしばしば表示されるものなのですが、今回使うソフトは問題ないはずです。何せオープンソースソフトウェアですので、悪意のある実装があればすぐに発覚します。

「詳細情報」をクリックすると画像右側のように「実行」が表示されるのでクリックします。一度この手順を踏むと、次回以降の起動時には表示されなくなります。

まずはログイン

f:id:otokoume93:20200518062628p:plain

メイン画面

起動すると、画像のようなウィンドウが立ち上がります。

まずは、情報を送信するLast.fmアカウントへのログインを済ませましょう。左下の「Not logged in」をクリックします。

f:id:otokoume93:20200518063250p:plain

ユーザー選択ウィンドウ

開いたウィンドウの右側にある「+」ボタンを押すとログイン画面が表示されるので、情報を入力してログインします。

ここには複数アカウントを登録でき、切り替えることができるようです。アカウントを分けることってあるのでしょうか?

ライブラリを読み込ませ、Let's Scrobble

f:id:otokoume93:20200518065547p:plain

ログインが済みましたね。ゴールはもう目の前です。ではやっていきましょう。

  1. メインウィンドウ上部のタブから「Media Player Database Scrobbler」を選択します。
  2. 「...」をクリックし、書き出したライブラリファイルを選択します。
    その他プレーヤーでも、ライブラリファイルの書き出しが可能ならそのファイルを読み込ませてください。
  3. 「Parse」をクリックします。
    すると中央に楽曲データが一覧で表示されます。
  4. 「Check all」をクリックします。全トラックが選択されます。(3,000件以上ある場合は、その数に収まるよう個別でチェックしてください)
  5. 「Scrobble」をクリックすれば、Last.fmに情報がアップロードされます。

ただし、このときにいくつか注意点があります。

 

一つは、一日にScrobbleできる件数に上限があること。以前、このソフトを利用して何万もの履歴をScrobbleした人がいたそうで、その影響でLast.fmに障害が発生したため、現在は一日に2,800件3,000件(Beta 1.24で若干緩和されたようです)までしかScrobbleできません。

上記画像の私の例ですと、15,000以上の履歴があるので、すべてScrobbleしようとするとエラーになります。この場合は数日に分けて行うしかありませんね。

ちなみに「Scrobble Playcounts」のチェックは、その曲の再生回数に応じて同じ回数Scrobbleするというものです。デフォルトでチェックされていますが、必要なければチェックを外すことで回数を減らすことができます。

 

二つ目は、上記の上限に達してしまうと、Last.fmAPIを利用したScrobbleが24時間できなくなること。直近で音楽を聞く予定があるなら上限に満たない程度にする必要がありますね(Spotifyの連携機能のものは影響されない模様)。

 

三つ目は、14日以上前の日付で再生された曲はScrobbleすることができないこと。これはLast.fmの仕様のためです。そういった曲は、このソフトを実行した日付に再生したていで処理され、実行直後はLast.fmのScrobble履歴がスゴいことになります。こればかりはしょうがないですけどね。

 

ここまで終了したらこちらの方法で言語を日本語に戻して構いません。ただ、Scrobbleしきれていない場合は、日本語に戻す前にライブラリファイルをコピーしておきましょう。
そうしないと内容の一部が日本語に変換され、読み込めなくなってしまいます。

MusicBeeを英語にできない・したくない場合

すでに作業が完了している方は読み飛ばしてください。

環境等の問題で言語変更ができなかったり、英語を見るだけでアレルギーが出る人のために、MusicBeeを日本語の状態で行う方法も記しておきます。まあ結局英語は見ることにはなるんですがね…。

ちなみにちょっとめんどくさいです。

ライブラリファイルを書き出し

ライブラリファイルを書き出しすところから説明していきます。

f:id:otokoume93:20200518025333p:plain

上記で説明している英語でのスクリーンショットと手順は同じです。

  1. 左の一覧から「ライブラリ」を選択。
  2. iTunes形式のXMLのライブラリファイルのコピーを保存」にチェックを入れる。
  3. 右下の「保存」をクリック。

MusicBeeを一度終了して、ファイルの行方を参考にライブラリが書き出されているか確認します。

ライブラリファイルを開いてみる

書き出されていることが確認できたら、ライブラリファイルをその場でコピペします。
すると「iTunes Music Library - コピー -.xml」ができるはずです。名前は変更しても構いません。

今度はそのファイルをテキストエディタで開きます。メモ帳でも構いませんが、今回は視認性を考慮し、Notepad++で行います。

f:id:otokoume93:20200518033830p:plain

ライブラリファイルを開いたところ

開くと何やらズラーッと並んでいますね。理解する必要はありません。

見てほしいのは中程の<key>タグで囲まれた「アーティスト」や「アルバムアーティスト」などの部分です。他の項目は英語なのに、ここだけ日本語ですよね。

これが前述した問題が起きる原因です。どんな問題が起きるかというと、まずソフトで読み込む際、<key>タグで囲まれた内容から、その右に続いてる文字列がどんな情報かを判断します。
しかし、そのソフトは海外の有志が作成したもの。もちろん日本語を考慮しているわけがありません。そのため、このファイルを読み込ませても必要な曲情報がないとみなされてしまうのです。

これを回避するために、日本語の箇所を英語に直していきます。

ちなみに、これは言語を日本語に設定している場合にのみ起こる現象です。おそらく各言語での名称に置き換えられるのでしょうね。

ライブラリファイルを書き換え

書き換えと言っても、直接直していくわけではありません。数曲程度ならなんとかなるかもしれませんが、数百数千ともなれば大量の時間を失うことになります。
時間は有限なのですから、ここは文明の利器を用いていきましょう。

f:id:otokoume93:20200518081832p:plain

置換ウィンドウ

テキストエディタの置換機能を使っていきます。たいていはCtrl+Hで開けます。

Notepad++の場合では、「検索文字列」に今回英語に変更したい日本語を、
「置換文字列」に変更する英語を入力します。

今回置換する項目はアーティスト、アルバムアーティスト、アルバムの3つなので、
まずはアーティストを次のように入力します。

検索文字列:<key>アーティスト</key>
置換文字列:<key>Artist</key>

<key>タグで囲んでいるのは、曲名などにアーティスト等置換する文字が含まれていたら一緒に置換されてしまうので、それを防ぐためです。

「すべて置換」を押すことで、ファイル内全体に対して置換処理を行います。かがくのちからってすげー!
残りのアルバムアーティストもAlbum Artistへ、アルバムもAlbumへ置換しましょう。

 

ここまで終われば、あとはソフトに読み込ませてScrobbleするだけです。

実はこの日本語での方法は本来書かないものだったのです。というのも、私は日本語のままで当初Scrobbleをしたわけなんですが、この箇所の執筆中に「もしやMusicBeeを英語にすればこんな面倒なことしなくて良いのでは…?」と思い立ってやってみると本当にできちゃって。ほんとここにドハマリしてまして、日本語じゃだめだってことに気づくまでに半日を溶かしちゃいました。

ここまで書いて消すのもアレだからということで残してある感じです。ハハ…。

おわりに

海外では結構このことについての質問があったりするのですが、日本では一つも見ないんですよね。そもそも国内でLast.fm使ってる人は少ないのかなぁ。

また、今回紹介したライブラリファイルを用いる以外にも、様々な手動でのScrobbleもできるそうです。需要があれば解説しようかと。

今後この小さき沼にハマる人が出ないためにと、急遽ブログを開設して執筆したわけなんですけども、初投稿6,000字オーバーってなかなかですよね。

また何かにハマったりしたら更新しようかと思ってますので、どうぞよしなに。

 

ではでは。