74 lines
1.2 KiB
Python
74 lines
1.2 KiB
Python
# Bryan Schumaker (11/07/2010)
|
|
|
|
import libsaria
|
|
from libsaria.collection import library
|
|
call = libsaria.event.call
|
|
|
|
song_list = None
|
|
song_set = None
|
|
|
|
filtered = False
|
|
visible = None
|
|
cur_index = -1
|
|
|
|
def add_id(id):
|
|
global song_list
|
|
global song_set
|
|
song_list.append(id)
|
|
song_set.add(id)
|
|
|
|
def reset():
|
|
global song_list
|
|
global song_set
|
|
song_list = []
|
|
song_set = set()
|
|
|
|
def load():
|
|
global song_list
|
|
global song_set
|
|
global visible
|
|
song_list = libsaria.data.load("playlist", ".list")
|
|
if song_list == None:
|
|
reset()
|
|
return
|
|
song_set = set(song_list)
|
|
|
|
def save():
|
|
libsaria.data.save(song_list, "playlist", ".list")
|
|
|
|
def walk():
|
|
global song_list
|
|
for id in song_list:
|
|
yield id
|
|
|
|
def filter(text):
|
|
global visible
|
|
global song_set
|
|
global filtered
|
|
if len(text) > 0:
|
|
visible = song_set.intersection(library.test_filter(text))
|
|
filtered = True
|
|
else:
|
|
visible = song_set
|
|
filtered = False
|
|
|
|
def is_visible(id):
|
|
global visible
|
|
global filtered
|
|
if filtered == True:
|
|
return id in visible
|
|
return True
|
|
|
|
def seq_next():
|
|
global cur_index
|
|
global song_list
|
|
cur_index += 1
|
|
while is_visible(song_list[cur_index]) == False:
|
|
cur_index += 1
|
|
return song_list[cur_index]
|
|
|
|
def next():
|
|
id = seq_next()
|
|
return call("NEXT", library.play_id, id)
|
|
|