mutagen ライブラリを使用して、音楽フォルダー内のファイルの名前を再フォーマットする Python スクリプトを作成しています。スクリプトは次のとおりです。
from mutagen.easyid3 import EasyID3
import os
print "input directory for processing: "
path = raw_input()
os.chdir(path)
file_list = filter((lambda x: '.mp3' in x), os.listdir(path))
for i in file_list:
current = EasyID3(i)
newname = current["title"][0] + ".mp3"
newname.replace(" ", "_")
del current
print "renaming "+i+" to "+newname
os.rename(i, newname)
実行しようとすると、次のようになります。
$ python rename_music.py
input directory for processing:
/home/james/Music/inscrutable_numbers
Traceback (most recent call last):
File "rename_music.py", line 11, in <module>
current = EasyID3(i)
File "/usr/local/lib/python2.7/dist-packages/mutagen/easyid3.py", line 167, in __init__
self.load(filename)
File "/usr/local/lib/python2.7/dist-packages/mutagen/id3.py", line 139, in load
for frame in self.__read_frames(data, frames=frames):
File "/usr/local/lib/python2.7/dist-packages/mutagen/id3.py", line 317, in __read_frames
try: yield self.__load_framedata(tag, flags, framedata)
File "/usr/local/lib/python2.7/dist-packages/mutagen/id3.py", line 340, in __load_framedata
return tag.fromData(self, flags, framedata)
File "/usr/local/lib/python2.7/dist-packages/mutagen/id3.py", line 1085, in fromData
raise ID3BadUnsynchData, '%s: %r' % (err, data)
mutagen.id3.ID3BadUnsynchData: invalid sync-safe string: '\x00j\x01\x0c\x00\x12(...lots of unicode...)\x12\xff\xff\xff\x00'
ここで何が問題なのか誰か知っていますか?
編集: 特定のファイルでは変異誘発が機能しないことが判明しました。try 句を追加してエラーをスキップしたところ、動作するようになりました