]> code.delx.au - notipod/commitdiff
Keep playlists in order
authorJames Bunton <jamesbunton@fastmail.fm>
Sun, 2 Jan 2011 19:38:35 +0000 (06:38 +1100)
committerJames Bunton <jamesbunton@fastmail.fm>
Sun, 2 Jan 2011 19:38:35 +0000 (06:38 +1100)
libnotipod.py

index 270c272d10cb6b569eb155e1baae0e1cd06fbd31..caf3b72bd208760eeb7b2c60fa4e00be913843f5 100644 (file)
@@ -46,18 +46,20 @@ class ITunesLibrary(NSObject):
                plist = read_plist(os.path.expanduser(filename))
                self.folder = self.loc2name(plist["Music Folder"])
                pl_tracks = plist["Tracks"]
-               self.playlists = {}
+               pl_lookup = {}
+               self.playlists = []
                for pl_playlist in plist["Playlists"]:
-                       playlist = self.make_playlist(pl_playlist, pl_tracks)
+                       playlist = self.make_playlist(pl_playlist, pl_tracks, pl_lookup)
                        if not playlist:
                                continue
                        yield "Read playlist: " + playlist.name
-                       self.playlists[playlist.pid] = playlist
+                       self.playlists.append(playlist)
+                       pl_lookup[playlist.pid] = playlist
 
        def loc2name(self, location):
                return urllib.splithost(urllib.splittype(urllib.unquote(location))[1])[1]
 
-       def make_playlist(self, pl_playlist, pl_tracks):
+       def make_playlist(self, pl_playlist, pl_tracks, pl_lookup):
                if int(pl_playlist.get("Master", 0)):
                        return
                kind = int(pl_playlist.get("Distinguished Kind", -1))
@@ -88,7 +90,7 @@ class ITunesLibrary(NSObject):
                parent = None
                try:
                        parent_pid = pl_playlist["Parent Persistent ID"]
-                       parent = self.playlists.get(parent_pid)
+                       parent = pl_lookup[parent_pid]
                except KeyError:
                        pass
                tracks = []
@@ -123,7 +125,7 @@ class ITunesLibrary(NSObject):
                                return playlist
 
        def get_playlists(self):
-               return self.playlists.values()
+               return self.playlists
 
 
 encoded_names = {}