2013年2月16日土曜日

walkmanのid3tag

ちょっと前にwalkman nw-z1050買った。
もってたmp3入れるとタグちゃんと認識しない。
id3タグ全部v2.3のUTF-16にしたのに
アーティスト名とか「不明」になる。

SuperTagEditorでみたところ、文字データはおそらくUTF-16なのに、
文字コードの情報がlatin1になってるっぽい?

SuperTagEditorはwineで使うとすぐ死ぬので、他の方法を色々探した結果、

taglibとそのフロントエンド使うことにした。
ほんとはrubyがよかったんだけど、setDefaultTextEncodingが使えなそうなので、
ubuntuのパッケージになってるtagpyってのを使うことにした。

で、色々苦労して以下をfindで回すことで全部変換した。
ちゃんとv2.3のUTF-16にしてるのに何かwalkmanがちゃんと認識しない時用スクリプト。

import sys
import tagpy
import tagpy.mpeg
import tagpy.id3v2

argvs = sys.argv
del argvs[0]

tagpy.id3v2.FrameFactory.instance().setDefaultTextEncoding(tagpy.StringType.UTF16)

for i in range(len(argvs)):
    f = tagpy.mpeg.File(argvs[i])
    t = f.tag()
    t1 = f.ID3v1Tag()
    t2 = f.ID3v2Tag()
    t2.artist = t2.artist
    t2.title = t2.title
    t2.album = t2.album
    print "%s - %s - %s" % (t2.artist, t2.album, t2.title)
    f.save()

っていうかパッケージに入ってるのに情報少なすぎでえらい苦労した。
サンプルのテストすら動かないし。
pythonとか使ったことないし。

0 件のコメント:

コメントを投稿