rendered paste body#!/usr/bin/env python# ex: ts=8 sts=4 sw=4 etimport eyeD3import osdef recover(s, enc): return s.encode('latin-1').decode(enc)def recoverid3(tag, f, enc): artist = recover(tag.getArtist(), enc) album = recover(tag.getAlbum(), enc) title = recover(tag.getTitle(), enc) if tag.getVersion() in (eyeD3.ID3_V1, eyeD3.ID3_V1_0, eyeD3.ID3_V1_1, eyeD3.ID3_V1_COMMENT_DESC, eyeD3.ID3_V2_2): tag.setVersion(eyeD3.ID3_V2_4) #tag.remove() tag.setTextEncoding(eyeD3.UTF_16_ENCODING) tag.setArtist(artist) tag.setAlbum(album) tag.setTitle(title) tag.update() returnfor dirp, dirs, files in os.walk('.'): for f in files: try: tag = eyeD3.Tag() if tag.link(os.path.join(dirp, f)): tags = tag.getArtist() + tag.getAlbum() + tag.getTitle() try: tags.encode('ascii') except UnicodeError: pass else: continue for enc in ('utf-8', 'cp949',): try: recover(tags, enc) except UnicodeError: pass else: print "Recovered", enc, "for", f recoverid3(tag, f, enc) break except Exception, e: print e