88"""
99
1010from mutagen .easyid3 import EasyID3
11+ import os
1112import argparse
1213import glob
14+ import re
1315
1416
1517def fixTags (fname , keep ):
@@ -24,14 +26,32 @@ def fixTags(fname, keep):
2426 del audio [k ]
2527 audio .save ()
2628
29+ def fixNumber (fname ):
30+ audio = EasyID3 (fname )
31+
32+ if `'tracknumber'` in audio :
33+ return
34+
35+ else :
36+ try :
37+ tracknumber = re .findall (r'\d+' , os .path .basename (fname ).split (' ' )[0 ])[0 ]
38+ audio ['tracknumber' ] = tracknumber .zfill (2 )
39+ audio .save ()
40+ except :
41+ return
42+
2743if __name__ == '__main__' :
2844 parser = argparse .ArgumentParser ()
2945 parser .add_argument ('directory' , help = 'Directory with mp3 files to fix.' )
3046 parser .add_argument ('--keep' , default = ['title' , 'artist' , 'album' , 'genre' ],
31- type = str , nargs = '+' , metavar = 'TAG' ,
32- help = "Tags to keep. Default: title, artist, album, genre" )
47+ type = str , nargs = '+' , metavar = 'TAG' ,
48+ help = "Tags to keep. Default: title, artist, album, genre" )
49+ parser .add_argument ('--fixnumber' , action = 'store_true' ,
50+ help = "Trying to fix song number." )
3351 args = parser .parse_args ()
3452
3553 for fname in glob .glob ("{}/*.mp3" .format (args .directory )):
3654 print ("Fixing tags for {}" .format (fname ))
3755 fixTags (fname , args .keep )
56+ if args .fixnumber :
57+ fixNumber (fname )
0 commit comments