最近、というか、大分前からかアルバム画像だけでなく、アーティスト画像を表示する音楽プレイヤーとかが増えてきた。
foobar2000でのアーティスト画像の管理
foobar2000でアーティストの画像を表示・管理するにはどうしたら良いのか?調べてみた。
を見ると
Preference -> Display -> Album art -> Artist
にどのパスに配置された何という名前の画像ファイルが、アーティスト画像と処理されるかの設定となっている。
通常では 選択、もしくは再生中の曲ファイル の同フォルダ内のartist.jpg
がアーティスト画像となる。
E:\My Music\氷室京介\ダイヤモンド・ダスト>dir /b
01_ダイヤモンド・ダスト.flac
02_Silent Blue.flac
03_ダイヤモンド・ダスト Instrumental.flac
artist.jpg
folder.jpg
ただ、これだとアーティスト画像をアルバム毎に何枚も格納する必要があるので、C:\My Music\[%album artist%]\artist.jpg
とすることで、管理しやすくなる。
E:\My Music\氷室京介>dir /b
''B''ORDERLESS
''NEO FASCIO'' TOUR
20th Anniversary ALL SINGLES COMPLETE BEST JUST MOVIN'ON~ALL THE-S-HIT~ Disc 1
・・・中略・・・
artist.jpg
肝心の画像を取得するにはどうしたらよいかだろうか…
以下、タイトルどおりにLast.fm、MusicBrainzからアーティスト画像を取得・保存することは難しい という今更の結果なので読むだけ無駄。 次回へ
art.exe
コンポーネント一覧/External program - foobar2000 Wiki*を見ると、アーティスト画像を一気に取得できるツール、 art.exe、 artGui.exeについての記述がある。
が…2010年に開発されたソフトということもあって、エラーとなって動かない。
images:5 images
リモート サーバーがエラーを返しました: (403) 使用不可能
foo_uie_biography
ならばと、バイオグラフィーを表示、取得する foo_uie_biography というコンポーネントを使ってみる。
アーティストのバイオグラフィー(プロフィール)や画像、アルバムのカバー画像をダウンロード・表示するパネル。
表示するデータは、タグの%artist%や%album%を参照してインターネットを通じてLast.fmから取得します。
foobar2000 CoreのArtwrok Reader経由でローカルHDDにある画像を優先して表示することが可能です。
User interface/UI extension - foobar2000 Wiki
表示機能そのものは使えるが、やはり肝心のLast.fmからデータ取得が上手く行かない。
Last.fm API
本丸のLast.fmのAPI使ってみようとしたが…
例:1
curl -X GET "http://ws.audioscrobbler.com/2.0/?method=album.getinfo&api_key=abcdefghijklmnopqrstuvwxyz123456&artist=Cher&album=Believe&format=json"
APIを使うためにはユーザー登録が必要なのだが、そこまで頑張ったとしても、 どこぞの違○アップロード画像を収集してるだけの癖して 画像のダウンロードをブロックしているらしく、白い星の画像しか帰さないらしい。
Last.fm API returns same “white star” image for all artists
MusicBrainz API
じゃあ MusicBrainzから取得すれば良いじゃない、ということで調べると、APIを使うのにユーザー登録も不要。しかも懇切丁寧。
curl -X GET --header 'Accept:application/json' https://musicbrainz.org/ws/2/release/76df3287-6cda-33eb-8e9a-044b5e15ffdd
ただ、こちらWindows版のcurl
を使うと?Accept:application/json
が機能しなくて、XML形式で帰ってくる。Accept: application/json
と空白を空けるとcurl: (6) Could not resolve host: application
とエラーを吐く。
curl — curl:(6)ホストを解決できませんでした:アプリケーション
fmt=json
を付けることでJSON形式で取得することは出来る。
curl -X GET "https://musicbrainz.org/ws/2/release/76df3287-6cda-33eb-8e9a-044b5e15ffdd?fmt=json"
ちなみにPowerShell
を使うと、curl
は、Invoke-WebRequest
の別名となっているために、curl.exe
とする必要がある。
curl.exe -X GET "https://musicbrainz.org/ws/2/artist/?query=ac%5C%2Fdc&fmt=json"
で、まんま私と同じことを考えた方が 6 年前にいらっしゃって、どうにかアーティスト画像を
Cover Art Archive / API - MusicBrainzから取得できないか?と質問してて、回答としては、結局無理で、関連URL(url-rels
)から、つまり別サイトから取るしかない、としている。
web services - Musicbrainz artist image and information - Stack Overflow
つまり
curl -X GET "http://musicbrainz.org/ws/2/artist/?query=artist:michael%20jackson&fmt=json" | jq
2
{
"created": "2021-07-22T15:04:19.521Z",
"count": 9868,
"offset": 0,
"artists": [
{
"id": "f27ec8db-af05-4f36-916e-3d57f91ecf5e",
・・・後略・・・
でartist
のid
を取得して、
curl -X GET "http://musicbrainz.org/ws/2/artist/f27ec8db-af05-4f36-916e-3d57f91ecf5e?inc=url-rels&fmt=json"
を投げる。
・・・前略・・・
"relations": [
{
"begin": null,
"target-type": "url",
"ended": false,
"type": "allmusic",
"source-credit": "",
"url": {
"resource": "https://www.allmusic.com/artist/mn0000467203",
・・・後略・・・
"type-id": "221132e9-e30e-43f2-a741-15afc4c5fa7c",
"url": {
"id": "4cac77c7-348e-4618-b550-4cc735cab638",
"resource": "https://commons.wikimedia.org/wiki/File:Michael_Jackson_in_1988.jpg"
},
"ended": false,
"type": "image",
という結果が帰ってくるから、それで何とかしろ、ということ。回答にもあるとおり、今においても Wikimedia Commonsにアップされてる画像ぐらいしか辿れない。
curl -X GET "http://musicbrainz.org/ws/2/artist/f27ec8db-af05-4f36-916e-3d57f91ecf5e?inc=release-rels&fmt=json"
と、リリース(release)から辿れば良いんじゃない?と思ったが、はたと気が付いた。Musicbrainzでもリリース作品毎のカヴァー画像という形でしか表示してなくて、アーティスト画像としては置いてないんだよなぁ。
凄い時間をかけた割に徒労に終わった。 次回に続く。