X-Git-Url: https://code.delx.au/notipod/blobdiff_plain/3216c6dfd93329cc260f69cbb617bde23d307c40..7040ac2828c56d1a87cb2a974e08dabb1459ed5a:/libsyncitunes.py diff --git a/libsyncitunes.py b/libsyncitunes.py index 096abc2..7e955ad 100644 --- a/libsyncitunes.py +++ b/libsyncitunes.py @@ -22,11 +22,16 @@ def read_plist(filename): raise TypeError(errStr) return plist -class Playlist(object): - def __init__(self, name, tracks, parent=None): +class Playlist(NSObject): + def init(self): + return self + + def set(self, name, pid, tracks, parent): self.name = name + self.pid = pid self.children = [] - self.tracks = tracks + self.tracks = [] + self.parent = parent if parent is not None: parent.children.append(self) @@ -39,25 +44,35 @@ class ITunesLibrary(NSObject): plist = read_plist(os.path.expanduser(filename)) self.folder = self.loc2name(plist["Music Folder"]) pl_tracks = plist["Tracks"] - self.playlists = [] + self.playlists = {} for pl_playlist in plist["Playlists"]: - self.playlists.append(self.make_playlist(pl_playlist, pl_tracks)) + playlist = self.make_playlist(pl_playlist, pl_tracks) + self.playlists[playlist.pid] = playlist return self def loc2name(self, location): return urllib.splithost(urllib.splittype(urllib.unquote(location))[1])[1] def make_playlist(self, pl_playlist, pl_tracks): +### print pl_playlist name = pl_playlist["Name"] + pid = pl_playlist["Playlist Persistent ID"] + parent = None + try: + parent_pid = pl_playlist["Parent Persistent ID"] + parent = self.playlists.get(parent_pid) + except KeyError: + pass tracks = [] for item in pl_playlist.get("Playlist Items", []): trackID = item["Track ID"] filename = str(pl_tracks[str(trackID)]["Location"]) filename = self.loc2name(filename) - filename = filename[len(self.folder):] filename = eval(repr(filename).lstrip("u")).decode("utf-8") tracks.append(filename) - return Playlist(name, tracks) + playlist = Playlist.alloc().init() + playlist.set(name, pid, tracks, parent) + return playlist def has_playlist(self, playlist): for p in self.playlists: @@ -69,8 +84,8 @@ class ITunesLibrary(NSObject): playlist = [p for p in self.playlists if p.name == name][0] return playlist.tracks - def list_playlists(self): - return [p.name for p in self.playlists] + def get_playlists(self): + return self.playlists.values() def outlineView_numberOfChildrenOfItem_(self, view, item): if item == None: