From bb86a70ae415bb46aa389f9e0d812261104c89c5 Mon Sep 17 00:00:00 2001 From: Bryan Schumaker Date: Wed, 20 Oct 2010 22:18:41 -0400 Subject: [PATCH] Playlist next The playlist will play the next visible song when the current song ends. If we have reached the end of the list, we loop back around to the beginning. --- libsaria/collection/__init__.py | 20 ++++++++++++++++++-- libsaria/collection/lens.py | 18 ++++++++++++++++++ 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/libsaria/collection/__init__.py b/libsaria/collection/__init__.py index 825fbbae..30a87ed7 100644 --- a/libsaria/collection/__init__.py +++ b/libsaria/collection/__init__.py @@ -75,15 +75,31 @@ def plist_save(): def plist_add_libid(lib_id): global playlist + # Hey, Future Bryan. I really want to use a lib_get_attrs() function + # to return a list of attributes. Can you do that for me, please? + # Thank you, Past Bryan artist = lib_get_attr(lib_id, "artist") album = lib_get_attr(lib_id, "album") title = lib_get_attr(lib_id, "title") playlist.insert_tags(artist, album, title, lib_id) -def plist_is_visible(text): +def plist_is_visible(id): global playlist - return playlist.is_visible(text) + return playlist.is_visible(id) + +def plist_filter(text): + global playlist + return playlist.filter(text) def plist_refresh(): return call("PLISTREFRESH") +def plist_next(arg): + global playlist + global cur_lib_id + next = playlist.next_id(cur_lib_id) + if next != None: + lib_play_id(next) +libsaria.event.invite("POSTEOS", plist_next) + + diff --git a/libsaria/collection/lens.py b/libsaria/collection/lens.py index 50a84238..17526ba1 100644 --- a/libsaria/collection/lens.py +++ b/libsaria/collection/lens.py @@ -62,3 +62,21 @@ class Playlist(collection.Collection): def __init__(self): collection.Collection.__init__(self, "playlist.dl_tree") + def next_id(self, last_id): + return_next = False + first = None + visible = self.is_visible + for id in self.walk_ids(): + if visible(id): + if first == None: + first = id + if return_next == True: + return id + if id == last_id: + return_next = True + if first != None: + return first + return None + + +