カバーアートや曲名・アーチストが、itunes/ipod touchでは表示できているのに、walkmanではどれも認識されない、という現象に以前遭遇し、粘着に調べた挙句ようやく解決できたのですが、やはり何か書いたつもりがfc2にもはてなにも書いてなかったので書き忘れた模様…
修正にはpython+eyeD3*1を使いました。なおこのカバーアート対応法、プレイリストとは違いNW-E062でも通用します。
検索で得た様々な知見を総合すると
- ID3はv2.3でないとダメ。itunesでやるとv2.4にされる。
- カバーアートはeyeD3.frames.ImageFrame.FRONT_COVERでないとダメっぽい
- エンコーディングはeyeD3.frames.UTF_16_ENCODING
あと直接関係はないのですが
import eyeD3 import os cm='/foo/bar/hoge.mp3' image_path='/foo/bar/hoge.jpg' tag=eyeD3.Tag() tag.link(cm) tag.header.setVersion(eyeD3.ID3_V2_3) tag.setTextEncoding(eyeD3.frames.UTF_16_ENCODING) if os.path.exists(image_path): tag.removeImages() tag.addImage(eyeD3.frames.ImageFrame.FRONT_COVER,image_path) tag.update()
こんな感じになります。実はpythonでスクリプトも作ったんですがあまりにも自分向けに特化していたのでさすがに恥ずかしく、公開はさし控えておきますです…単にこれにglob.globで得たパス全てにfor-eachするぐらいの違いなんですけどね。
なお、これで対応させたmp3はitunesなどでも正常に表示できます。 さらに、Amazonのデジタルミュージックで購入した楽曲は、何もせずとも正常に表示できます。
*1:eyeD3は単体でも使えますけどね