0
|
1 #!/usr/bin/env python
|
|
2
|
|
3 import errno
|
|
4 import glob
|
|
5 import os
|
|
6 import random
|
|
7 import shutil
|
|
8 import subprocess
|
|
9
|
|
10 def compress(srcfile, destdir):
|
|
11 f = file(srcfile, 'rU')
|
|
12 for line in f:
|
|
13 s = line.strip().split('\t')[-1]
|
|
14 path = reduce(lambda a, b: a + '/' + b, s.split(':')[1:], '')
|
|
15 print "Path is " + path
|
|
16 destmp3 = destdir + '/' + path.split('/')[-1][:-3] + 'mp3'
|
|
17 if os.path.isfile(destmp3):
|
|
18 print "Skipping"
|
|
19 continue
|
|
20
|
|
21 if path.lower().endswith('.mp3'):
|
|
22 shutil.copy(path, destmp3)
|
|
23 elif path.lower().endswith('.m4a'):
|
|
24 faad = subprocess.Popen(['faad', '-qw', path], stdout = subprocess.PIPE)
|
|
25 lame = subprocess.Popen(['lame', '--abr', '160', '-', destmp3], stdin = faad.stdout)
|
|
26 faad.stdout.close() # So lame will get SIGPIPE
|
|
27 rtn = lame.communicate()
|
|
28 print "Returned " + str(rtn)
|
|
29 else:
|
|
30 print "Don't know how to convert " + path
|
|
31
|
|
32 def shuffle(srcdir):
|
|
33 files = glob.glob(srcdir + '/*.mp3')
|
|
34 random.shuffle(files)
|
|
35 for i in range(6):
|
|
36 destdir = srcdir + '/CD%02d' % (i + 1)
|
|
37 try:
|
|
38 os.mkdir(destdir)
|
|
39 except OSError, e:
|
|
40 if e.errno == errno.EEXIST:
|
|
41 pass
|
|
42 for j in range(99):
|
|
43 try:
|
|
44 shutil.move(files.pop(), destdir)
|
|
45 except IndexError, e:
|
|
46 break
|
|
47 print "Ran out of space, %d left" % (len(files))
|
|
48
|
|
49 if __name__ == "__main__":
|
|
50 srcfile = 'Stuff I like.txt'
|
|
51 destdir = '/tmp/music'
|
|
52 compress(srcfile, destdir)
|
|
53 shuffle(destdir)
|