iTunesアートワークファイルをハック。

"ハック"といっても全然たいしたことではないのだが、....
iTunesに登録されているアルバムアートワークをJPEG/PNG形式のイメージファイルとして取り出すというプログラムは作成することができた。自分用にとりあえず動けばよいという感じで作ったので、かっこよいGUIなんかなくってコンソールアプリにしてある。

ただし、"Download"フォルダ下にあるITCファイル名からアーティスト名、アルバムタイトルを引くことができていない。
"Local"フォルダ下にあるITCファイルはすべて問題なく変換済み。"Download"フォルダにはiTunesiTunes Storeから自動的にダウンロードしたアートワークが保存されるようなんだけどな。

今後、面倒くさいことにならないように、iTunesの設定で『持っていないアルバムアートワークを自動的にダウンロードする』チェックははずしておくことにする。

多分、これ以上は"iTunes Music Library.xml"ではなく、"iTunes Library.itl"ファイルを使うことになりそう。しかし、この"iTunes Library.itl"ファイルはバイナリファイルだから適当に調べてできるものではない。ちゃんとやるためには"iTunes COM for Windows SDK"のようにAppleから提供されているSDKを使わなければいけないのかもしれないな。
COMとか面倒くさいから、これ以上の追求はやめようかと思う。

と言いながらも、ちょこっとだけSDKのドキュメントを眺めてみたら、IITTrack InterfaceArtworkメソッドでなんとかなりそうな気がする。

Tips

ちょっとだけまとめておく。

ITCファイル名の構造。

アートワークフォルダ(例えば、"C:\Documents and Settings\User Name\My Documents\My Music\iTunes\Album Artwork"というフォルダの下で"*.itc"という拡張子を持ったファイルをリストアップする。このITCファイルがイメージファイルになっている。(先頭の500バイトを削除。そして、ファイルヘッダからPNGJPEGかをチェックして拡張子を決定する。)
しかし、ITCファイル名は"2384ED86FA2F6B61-92043679616D6150.itc"というようになっており、このファイル名のままでは誰のなんていうアルバムのアートワークなのかはわからない。
"Local"フォルダ下のITCファイル限定であるが、"-"をデリミタとして前半はLibrary Persistent ID、後半はトラックのPersistent IDになっている。だから、この2つのIDをキーとしてiTunesフォルダ下にあるファイル"iTunes Music Library.xml"からトラックに関する情報を引いてきてアーティスト、アルバムタイトルを判断することができる。
ちなみに、"Download"フォルダ下のITCファイルは同じように前半はLibrary Persistent IDであるが、後半は何のIDなのかが不明。

iTunes Music Library.xml

iTunesのフォルダ(例えば、"C:\Documents and Settings\User Name\My Documents\My Music\iTunes")に"iTunes Music Library.xml"というXML形式のファイルがある。このファイルを解析するとトラック、アルバム、プレイリストの情報がわかる。
例えば、あるトラックに関する情報は次のように記載されている。

 424

Track ID424
NameRiot
ArtistBlue Murder
ComposerJohn Sykes
AlbumBlue Murder
GenreRock
KindAAC オーディオファイル
Size6214312
Total Time381921
Track Number1
Year1989
Date Modified2005-05-25T13:55:50Z
Date Added2005-03-26T03:03:48Z
Bit Rate128
Sample Rate44100
Play Count3
Play Date3238749682
Play Date UTC2006-08-18T03:41:22Z
Rating80
Artwork Count1
Persistent IDB4653EE11B833023
Track TypeFile
Locationfile://localhost/C:/Documents%20and%20Settings/xxxxx/My%20Documents/My%20Music/iTunes/iTunes%20Music/Blue%20Murder/Blue%20Murder/01%20Riot.m4a
File Folder Count4
Library Folder Count1