ちょっと前に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 件のコメント:
コメントを投稿