iTunes のアルバムアートワークを抽出する

背景

さまざまな理由で,iTunes のアルバムアートワークを画像として抽出したいときがあるでしょう. たとえば,ざっとサムネイルとして眺めてみたいとか.

抽出した画像の2次利用や公衆配信は,明白に知財侵害なのでダメ絶対,です. 細かいことをいうと,個人利用の範囲でも厳密には,マズいような気もします. 本エントリは,技術的にはできますよね,的なお話. …ということで,ひとつよしなに.

iTunesのアルバムアートワークは,iTunesフォルダを {itune_folder}とすると{itnue_folder}/Album Artwork/配下の拡張子itcファイルに収められています. 特に手を加えていなければ,~/Music/iTuness/Album Artwork/にあるはずです. ただし,itc ファイルには,様々なメタデータが画像の前についています. 画像として扱うには,このメタデータを外す必要があります.

スクリプト

サクッと答えだけ書きます. OSX を使っている前提に立っています.Windowsの方はCygwinなり何なりを入れてください.

1
2
3
4
#!env bash
for i in $(find ~/Music/iTuness/Album\ Artwork/ -name '*.itc'); do
  dd if=$i of=$(basename $i .itc).png bs=1 skip=492
done

注意事項

dd でアタマを落とすだけ.492 バイトは,環境(iTunesのバージョンなど?)によって違う可能性がありそうです. ググると,この数値は500バイトであると主張している人が少なからず居るようですので.

お手元環境で何バイトを削ればよいかは,目視でお判りになるでしょう. 上記のスクリプトを理解できる人の手元には,愛用のバイナリエディタもおありでしょうから,

あと,上記のスクリプトでは,拡張子を png に決め打っていますが,実際には,画像は,PNG と JPEG の2種類があります. 言うまでもありませんが,これは file コマンドを使って容易に識別できます. こんなふうに.

1
2
3
4
$ file *.png
4931EBE6BCC87C34-07FBFB2CA12DDA5D.png:   JPEG image data, JFIF standard 1.01, comment: "AppleMark"
4931EBE6BCC87C34-08F02BE333CFBBAA.png:   PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
4931EBE6BCC87C34-0A2AC7440B8F25B6.png:   JPEG image data, JFIF standard 1.01

あとは,上手いことやってください.