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)
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:
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: