#!/usr/bin/python2 import eyed3 import sys def err(*args): sys.stderr.write(" ".join(args) + "\n") def die(*args): err(*args) sys.exit(1) USAGE='Usage: {0} [file]'.format(sys.argv[0]) def to_file_case(name): for ch in name: if ord(ch) > 127: err("ERROR: {0} outside ASCII range".format(ord(ch))) raise Exception("NonAsciiName") return '_'.join(name.lower().split()) filenames = sys.argv[1:] if not filenames: die(USAGE) def do_rename(filename): audiofile = eyed3.load(filename) (tn,_) = audiofile.tag.track_num if tn is None: err("ERROR: Unknown track number for file `{0}'".format(filename)) title = audiofile.tag.title newname = '{0:02}_-_{1}'.format(tn, to_file_case(title)) print "renaming: `{0}' -> `{1}'".format(filename, newname) audiofile.rename(newname) for f in filenames: try: do_rename(f) except: err("ERROR: Unable to rename `{0}'".format(f))