from twisted.python import filepath
import mmpython as mmp
import time
EXT = '.mp3'
TEMP = '%2.2d_%s_-_%s_-_%s' + EXT
NESTED = True
def rp(s):
return s.replace('\x00', '').replace(' ', '_').replace(':','').encode('utf-8')
def job(desc):
info = mmp.parse(desc.path)
if not info:
print 'WARNING: no info found on', desc
return 'No info found on: %r' % desc
name = TEMP % (int(info.trackno), rp(info.title), rp(info.artist), rp(info.album))
print 'Parsed', desc.basename(), 'as', name
if NESTED:
fp = filepath.FilePath(rp(info.artist), rp(info.album))
tgt = tgt_dir
for c in (rp(info.artist), rp(info.album)):
tgt = tgt.child(c)
try:
tgt.createDirectory()
except:
pass
tgt = tgt.child(name.encode('utf-8'))
else:
tgt = tgt_dir.child(name.encode('utf-8'))
return desc.copyTo(tgt)
def main():
for desc in [f for f in root.walk() if f.isfile()]:
job(desc)
if __name__ == '__main__':
import sys
root = filepath.FilePath(sys.argv[1])
try:
tgt_dir = filepath.FilePath(sys.argv[2])
except:
tgt_dir = filepath.FilePath('_ip-recover-%d' % int(time.time() * 1000000))
tgt_dir.createDirectory()
main()