ocarina/libsaria/sources/playlist/next.py

51 lines
1.0 KiB
Python

# Bryan Schumaker (5 / 14 / 2011)
import random
import playlist
import libsaria
recent = []
def track_recent(artist, title):
recent.append((artist, title))
if len(recent) > 50:
recent.pop(0)
def incr_index(cur_index, max_index):
cur_index += 1
if cur_index == max_index:
cur_index = 0
return cur_index
def seq_next(cur_id):
is_visible = libsaria.sources.is_visible
max = playlist.size()
if max == 0: # List is empty
return
index = playlist.index(cur_id)
index = incr_index(index, max)
while not is_visible(playlist.get(index)):
index = incr_index(index, max)
return index
def check_candidate(id):
(artist, title, like) = libsaria.sources.get_attrs_id(id, "artist", "title", "like")
if (artist, title) in recent:
return False
if like == False:
return False
return True
def rand_next(list):
max = len(list) - 1
if max == -1: # List is empty
return
for i in xrange(15):
index = random.randint(0, max)
id = list[index]
if check_candidate(id) == True:
break
return playlist.index(id)