ocarina/libsaria/collection/playlist.py

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)