Pandora Pocket

IT系と日常系の備忘録。三日坊主。

音楽データベースのMusicBrainzからデータを引っ張ってくるときの備忘録。

手元にあった林原めぐみのアルバム(Fifty-Fifty)を例に書いています。

前提

MusicBrainzでは各リソースごとにMBIDと呼ばれる一意なIDが割り振られています。
ここでいうリソースとは

  • area
  • artist
  • event
  • instrument
  • label
  • place
  • recording
  • release
  • release-group
  • series
  • work
  • url
    の12個の要素のこと。
    詳細は下記を参照。

https://musicbrainz.org/doc/MusicBrainz_Entity

例えば「林原めぐみ」というアーティスト(Artist)のMBIDは「375a3c4c-7898-47f0-ad0e-443a75148c7a」となります。

https://musicbrainz.org/artist/375a3c4c-7898-47f0-ad0e-443a75148c7a

Fifty-Fiftyというアルバム(Release)のMBIDは「69322e7c-0fef-409e-a9f6-b43d7c361398」となります。

https://musicbrainz.org/release/69322e7c-0fef-409e-a9f6-b43d7c361398

このアルバムに収録されている「恐山ル・ヴォワール 」という曲(Recording)のMBIDは「b7a7d6d6-b40e-47b0-96a5-208219471bea」。

https://musicbrainz.org/recording/b7a7d6d6-b40e-47b0-96a5-208219471bea

発売元(Label)はキングレコードなのでMBIDは「856ae6ab-e3cb-4e8d-a69b-8269844d50a3」。

https://musicbrainz.org/label/925df646-49d9-4280-a0aa-9b61f2350893

MBIDがわからない場合のデータ取得方法

DiscIDとTOCをもとに取得できます。
DiscIDの算出方法は下記のサイトを参照。

https://musicbrainz.org/doc/Disc_ID_Calculation

ライブラリも提供されているのでそれを使うのが確実かと。

上記のアルバムの場合、下記で取得できます。

https://musicbrainz.org/ws/2/discid/PBk5WCAkltkq49R0Pawn4b_Qe1Y-?toc=1+14+336665+150+23688+56073+88818+114565+135662+158010+184202+211033+224801+238725+265801+284612+313885

PBk5WCAkltkq49R0Pawn4b_Qe1Y-がDiscID、それ以降のTOCのうち、1+14となっている部分が最初のトラックIDと最後のトラックID。
それ以降がTOCですね。 最初の336665がトラック0にあたり、それ以降トラック1、トラック2・・・トラック14となる模様。

取得できたXML内の、"release id="の項の値がMBIDとなります。
なお、上記URLに「&fmt=json」を付けておくと、JSONで取得可能。

CDの情報取得

https://musicbrainz.org/ws/2/release/69322e7c-0fef-409e-a9f6-b43d7c361398

上記の場合、タイトルは取れますが、曲名、アーティスト名などは取れません。
「inc=」のサブクエリを付けて取得する必要があります。

曲名も含めて取得したい場合

https://musicbrainz.org/ws/2/release/69322e7c-0fef-409e-a9f6-b43d7c361398?inc=recordings

のように、「?inc=recordings」を付けることで取得可能。

複数のサブクエリを用いる場合は「+」で区切る。

例)

https://musicbrainz.org/ws/2/release/69322e7c-0fef-409e-a9f6-b43d7c361398?inc=recordings+labels+artists+artist-credits

これだとアルバム全体のアーティスト、発売元、曲情報(曲ごとのアーティスト情報も含む)が取得可能。

曲の情報取得

https://musicbrainz.org/ws/2/recording/ed015f01-1494-45ca-baa3-dc5a3196e744

上記だとタイトルのみ。
「?inc=artists」を付けることでアーティスト名も取得可能。
「?inc=releases」を付けることでどのCDに収録されているかが取得可能。

アルバムアート(カバーアート)の取得

CDのアルバムアートが取得可能。

http://coverartarchive.org/release/69322e7c-0fef-409e-a9f6-b43d7c361398

CDのMBIDを渡すとJSON形式でURLが取得可能。
CDによってはパッケージの前面背面だけでなく、ブックレットやCDレーベルも取得可能な模様。
・・・ブックレットはさすがにまずいと思うんですが、いいんかこれ・・・。

前面、背面を指定したい場合は

http://coverartarchive.org/release/69322e7c-0fef-409e-a9f6-b43d7c361398/front

のように、前面なら「front」、背面なら「back」と末尾につければOK。
これだと(存在する場合はですが )直接画像が取得されます。

参考

趣味がヘヴィメタルとBABYMETALの久保田です。 今日は私が常用しているオープンな音楽データベースMusicBrainzをご紹介します。 MusicBrainzとは 非営利のMetaBrainz財団によって運営されて …
[はてなブックマークで表示]

https://musicbrainz.org/doc/Development/JSON_Web_Service

https://musicbrainz.org/doc/Development/XML_Web_Service/Version_2

https://musicbrainz.org/doc/Cover_Art_Archive/API