Added mp3rename script
Getty Ritter
8 years ago
| 1 | #!/usr/bin/python2 | |
| 2 | ||
| 3 | import eyed3 | |
| 4 | ||
| 5 | import sys | |
| 6 | ||
| 7 | def err(*args): | |
| 8 | sys.stderr.write(" ".join(args) + "\n") | |
| 9 | ||
| 10 | def die(*args): | |
| 11 | err(*args) | |
| 12 | sys.exit(1) | |
| 13 | ||
| 14 | USAGE='Usage: {0} [file]'.format(sys.argv[0]) | |
| 15 | ||
| 16 | def to_file_case(name): | |
| 17 | for ch in name: | |
| 18 | if ord(ch) > 127: | |
| 19 | err("ERROR: {0} outside ASCII range".format(ord(ch))) | |
| 20 | raise Exception("NonAsciiName") | |
| 21 | return '_'.join(name.lower().split()) | |
| 22 | ||
| 23 | filenames = sys.argv[1:] | |
| 24 | ||
| 25 | if not filenames: | |
| 26 | die(USAGE) | |
| 27 | ||
| 28 | def do_rename(filename): | |
| 29 | audiofile = eyed3.load(filename) | |
| 30 | ||
| 31 | (tn,_) = audiofile.tag.track_num | |
| 32 | if tn is None: | |
| 33 | err("ERROR: Unknown track number for file `{0}'".format(filename)) | |
| 34 | ||
| 35 | title = audiofile.tag.title | |
| 36 | newname = '{0:02}_-_{1}'.format(tn, to_file_case(title)) | |
| 37 | ||
| 38 | print "renaming: `{0}' -> `{1}'".format(filename, newname) | |
| 39 | audiofile.rename(newname) | |
| 40 | ||
| 41 | for f in filenames: | |
| 42 | try: | |
| 43 | do_rename(f) | |
| 44 | except: | |
| 45 | err("ERROR: Unable to rename `{0}'".format(f)) |