【コラム】

OS X ハッキング!

197 iTunes 7のアートワーク関連機能をクイックハック

    海上忍  [2006/09/28]

    Aperture 1.5、出ました。既存ユーザは無償アップデートOKということで、ソフトウェアアップデートでの配布開始を楽しみに待っているユーザも少なくないはず。もちろん私もその1人、起きがけにコーヒーを飲みながらソフトウェアアップデートを起ち上げると…… おや、iTunes 7.0.1が。

    というわけで、今回は急遽予定を変更、「iTunes 7」について。Cover Flowおよびアートワーク自動ダウンロード機能の反響は大きいようで、にわかにTIPS的情報への要求が高まっている定番ジュークボックスソフトだ。この原稿を書き始める数時間前にマイナーアップデート版(7.0.1)がリリースされたこともあり、先日掲載されたレビュー記事の補足として、iTunes 7の最新TIPS情報をお届けする次第だ。

    自動アートワーク自動ダウンロード機能のまとめ

    iTunes 7に追加された「アートワーク自動ダウンロード機能」は、サウンドライブラリに蓄えられた楽曲を対象にアートワークの有無をチェック、なければiTunes Storeにその楽曲の在庫を問い合わせ、あればアートワークを自動ダウンロードするという仕組み。自力で音楽CDからリッピングした楽曲も対象になるうえ、アートワークはタダ。写りのいいアートワークを探してネット上を右往左往、という手間が格段に減る魅惑の新機能だ。

    アートワークを入手する際の条件は2つ、iTunes Storeのアカウント(登録は無料)を有していることと、目的のアートワークを持つ楽曲が世界共通のiTunes Storeデータベースに登録されていること。対象の楽曲が世界中どこかのiTunes Storeで販売されていなければならないため、日本の店舗のみの扱いと考えられる邦楽の場合、iTunes Store内を検索して該当曲がなければアウト、ということになる。

    ダウンロードされたアートワークは、iTunesのサウンドライブラリフォルダ(通常は~/Music/iTunes)にある「Album Artwork」フォルダ以下に保存される。ファイルは「*.itc」という拡張子を持つ独自形式だが、内容はPNGまたはJPEGの先頭に492バイトのバイナリを加えているにすぎないため、以下の要領でコマンドを実行すればPreviewで開くことができる。

    $ tail -c +493 ファイル名.itc | open -f -a Preview

    埋め込み型か、外付け型か

    前述したとおり、自動ダウンロードされたアートワークは独立した*.itcファイル(以降、外付け型)として保存され、同期したときにiPodへと転送される。iPodのルートにある「iPod_Control」の下、ArtWorkディレクトリ以下に「ArtWorkDB」ファイルと「F****.ithmb」ファイルが転送先で、以降同期のつどファイルが更新される、という仕組みだ。

    なお、iPodで再生するかぎり、楽曲のアートワークが埋め込み型か外付け型かを見分けることは難しい。iTunesでは、その楽曲のコンテキストメニューに[ダウンロードされたアートワークを消去]が表示されるかどうかで区別できるが、iPodにはそのような機能がないからだ。

    iPodでは埋め込み/外付けの違いを意識する必要はないが、iTunesで共有しているサウンドライブラリを楽しむ場合、埋め込み型ではアートワークが表示され、外付け型では表示されない、という違いが生じる。iTunesの共有機能を応用しているMusicPublisherも同様に、自動ダウンロードされたアートワークは表示されない。この仕様が改善されないかぎり、ファイルが肥大化するデメリットはあるものの、埋め込み型のほうが好都合といえる。

    アートワークを曲に埋め込む

    そこで本稿の締め切り間際にあわてて作成したのが、以下のAppleScript。これをAutomatorの「AppleScriptを実行」アクションに貼り付け、「選択されたiTunes項目を取得」アクションから引き継ぐようワークフローをデザインすればOK。iTunesで対象の楽曲(複数可)を選択、ワークフローを実行すると……あら不思議、というほどでもないが、自動ダウンロードされた外付け型のアートワークはその楽曲に埋め込まれる。約10分で書き上げたため至らない点はご容赦、at your own riskで利用していただきたい。

    とても単純なワークフローだが、なかなか便利に使えるので一度お試しあれ

    on run {input, parameters}
        
        tell application "iTunes"
            repeat with i in input
                if (class of i is file track) and (every artwork of i is not null) and (downloaded of artwork 1 of i is true) then
                    set ThisArtWork to (data of artwork 1 of i) as picture
                    set data of artwork 1 of i to ThisArtWork
                end if
            end repeat
        end tell
        
        return input
    end run

    新着記事

    特設サイトの情報

      人気記事

      一覧

        イチオシ記事

        新着記事

        特別企画

        マイナビニュースマガジン