まとめ

iTunes(「ミュージック」アプリ)の「アートワークを取得」で設定したアルバム画像は独自のデータベースで管理されていて音楽ファイル自体のタグとしては埋め込まれていない。このため音楽サーバなどに転送して別のVLC等の別のアプリで表示するとアルバム画像が認識されない(埋め込まれていないので当然)。

ミュージックアプリのライブラリでは、音楽ファイルはパスやその他の情報とともにMusic Libraryの中(xmlファイルで出力できる)のPERSISTENT IDというフィールドで一意に管理される。PERSISTENT IDは64ビット符号付き整数(NSNumber)のようだが、xmlに出力された際は16進数でエンコードされている。

肝心のアートワークの場所は ~/Library/Containers/com.apple.AMPArtworkAgent/Data/Documents/ のsqliteデータベースに保存されていて、そこからアルバム画像ファイル名の先頭hash値が検索可能である。※ちなみにhash文字列の後ろにあるsuffixのルールはよくわからなかったが、複数設定したときの何かなのだろう、きっと。

なお、「アートワークを取得」で自動で設定したアートワークでなく自分でダウンロードした画像ファイルを手動で設定した場合には音楽ファイルへの埋め込みとして(も?)処理されるようだった。

以上から、以下のようなアプリを作成した
①ライブラリの情報から音楽ファイルのパスとPERSISTENT IDを取得
②PERSISTENT IDからアートワークファイルのパスを検索
③②を①に埋め込みアートワークとして設定
④もしすでに埋め込まれていれば何もしない(オプションで強制上書きは可能)

と、ここまでは調べて決めたのであとはきっとGithub Copilot氏が作ってくれるだろ…ということで今までやってなかったがVibe Codingをいうものを試してみむとするなりしてみました。

できたもの

Githubで公開してみました。READMEも含めて基本的に全てGithub Copilotが生成した。
https://github.com/hkurosawa/iTunesArtworkFetcher

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA