音楽データベースの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/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。
これだと(存在する場合はですが )直接画像が取得されます。
参考
https://musicbrainz.org/doc/Development/JSON_Web_Service
https://musicbrainz.org/doc/Development/XML_Web_Service/Version_2