"ハック"といっても全然たいしたことではないのだが、....
iTunesに登録されているアルバムアートワークをJPEG/PNG形式のイメージファイルとして取り出すというプログラムは作成することができた。自分用にとりあえず動けばよいという感じで作ったので、かっこよいGUIなんかなくってコンソールアプリにしてある。
ただし、"Download"フォルダ下にあるITCファイル名からアーティスト名、アルバムタイトルを引くことができていない。
"Local"フォルダ下にあるITCファイルはすべて問題なく変換済み。"Download"フォルダにはiTunesがiTunes Storeから自動的にダウンロードしたアートワークが保存されるようなんだけどな。
多分、これ以上は"iTunes Music Library.xml"ではなく、"iTunes Library.itl"ファイルを使うことになりそう。しかし、この"iTunes Library.itl"ファイルはバイナリファイルだから適当に調べてできるものではない。ちゃんとやるためには"iTunes COM for Windows SDK"のようにAppleから提供されているSDKを使わなければいけないのかもしれないな。
COMとか面倒くさいから、これ以上の追求はやめようかと思う。
Tips
ちょっとだけまとめておく。
ITCファイル名の構造。
アートワークフォルダ(例えば、"C:\Documents and Settings\User Name\My Documents\My Music\iTunes\Album Artwork"というフォルダの下で"*.itc"という拡張子を持ったファイルをリストアップする。このITCファイルがイメージファイルになっている。(先頭の500バイトを削除。そして、ファイルヘッダからPNGかJPEGかをチェックして拡張子を決定する。)
しかし、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 ID 424
Name Riot
Artist Blue Murder
Composer John Sykes
Album Blue Murder
Genre Rock
Kind AAC オーディオファイル
Size 6214312
Total Time 381921
Track Number 1
Year 1989
Date Modified 2005-05-25T13:55:50Z
Date Added 2005-03-26T03:03:48Z
Bit Rate 128
Sample Rate 44100
Play Count 3
Play Date 3238749682
Play Date UTC 2006-08-18T03:41:22Z
Rating 80
Artwork Count 1
Persistent ID B4653EE11B833023
Track Type File
Location file://localhost/C:/Documents%20and%20Settings/xxxxx/My%20Documents/My%20Music/iTunes/iTunes%20Music/Blue%20Murder/Blue%20Murder/01%20Riot.m4a
File Folder Count 4
Library Folder Count 1