started Record class
[riffle.git] / update_shuffle.py
blob92de8afbc7bd47dc587852a5c84fe10308adb940
1 #!/usr/bin/env python
2 import sys, os, os.path
3 from shuffle import Track, ShuffleDB
5 profiles = {
6 "cast": {
7 "dirs" : ("Podcasts",),
8 },
9 "yoga": {
10 "dirs" : ("Yoga","Podcasts"),
14 if len(sys.argv) < 2:
15 print "Usage: update_shuffle.py PROFILE"
16 exit(1)
18 if not profiles.has_key(sys.argv[1]):
19 print "Unknown profile: " + sys.argv[1]
20 exit(1)
22 profile = profiles[sys.argv[1]]
24 if len(sys.argv) < 3:
25 root = os.path.dirname(sys.argv[0])
26 else:
27 root = sys.argv[2]
29 if len(sys.argv) < 4:
30 control = os.path.join(root, "iPod_Control", "iTunes")
31 else:
32 control = sys.argv[3]
34 root = os.path.abspath(root)
35 control = os.path.abspath(control)
37 print "Loading old database"
38 os.chdir(control)
39 db = ShuffleDB()
40 tracks, pstate = db.read_all()
41 Track.set_old_tracks( tracks )
42 for i in xrange(len(tracks)):
43 print i, tracks[i]
44 print pstate
46 print "Searching for new files"
47 os.chdir(root)
48 tracks = []
49 for profile_dir in profile['dirs']:
50 for root, dirs, files in os.walk( profile_dir ):
51 for f in files:
52 if f.endswith(Track.supported_file_types):
53 ipod_path = u"/" + os.path.join(root,f).replace("\\","/")
54 t = Track.new( ipod_path )
55 if ipod_path.lower().startswith((u"/book/", u"/podcasts/")):
56 t.bookmarkflag = True
57 t.shuffleflag = False
58 tracks.append( t )
59 # refresh pstate
60 old_current = Track.old_tracks[ pstate.trackno ]
61 print "old current:", old_current
62 found = False
63 for i in xrange( len(tracks) ):
64 if tracks[i] == old_current:
65 found = True
66 pstate.trackno = i
67 if not found:
68 # if we set these to correct numbers we might override existing bookmark
69 pstate.trackno = -1
70 pstate.trackpos = -1
71 pstate.shufflepos = 0
74 print "Writing new database"
75 os.chdir(control)
76 for i in xrange(len(tracks)):
77 print i, tracks[i]
78 print pstate
79 db.write_all(tracks, pstate)
80 if os.path.exists("iTunesShuffle"):
81 os.remove("iTunesShuffle") # let the player recreate it