2011-05-11 23:05:47 -04:00
|
|
|
# Bryan Schumaker (5 / 11 / 2011)
|
|
|
|
|
|
|
|
import threading
|
2011-05-12 22:34:36 -04:00
|
|
|
from libsaria import storage
|
2011-05-11 23:05:47 -04:00
|
|
|
plist_lock = threading.Lock()
|
|
|
|
lock_plist = plist_lock.acquire
|
|
|
|
unlock_plist = plist_lock.release
|
|
|
|
|
|
|
|
# Playlist
|
|
|
|
song_list = []
|
|
|
|
song_set = set()
|
|
|
|
|
2011-05-12 22:34:36 -04:00
|
|
|
def load():
|
|
|
|
global song_list
|
|
|
|
plist_list = storage.load_obj("playlist", list)
|
|
|
|
if plist_list.__class__ != list:
|
|
|
|
plist_list = []
|
|
|
|
lock_plist()
|
|
|
|
song_list = plist_list
|
|
|
|
unlock_plist()
|
|
|
|
|
2011-05-13 08:19:50 -04:00
|
|
|
# NOTE: You should already be holding the lock when you call this
|
2011-05-12 22:34:36 -04:00
|
|
|
def save():
|
|
|
|
storage.save_obj("playlist", song_list)
|
|
|
|
|
|
|
|
def reset():
|
|
|
|
global song_list
|
|
|
|
lock_plist()
|
|
|
|
song_list = []
|
|
|
|
save()
|
|
|
|
unlock_plist()
|
2011-05-11 23:05:47 -04:00
|
|
|
|
|
|
|
def add_ids(id_list):
|
|
|
|
lock_plist()
|
|
|
|
song_list.extend(id_list)
|
2011-05-12 22:34:36 -04:00
|
|
|
save()
|
2011-05-11 23:05:47 -04:00
|
|
|
unlock_plist()
|
|
|
|
|
2011-05-12 08:11:35 -04:00
|
|
|
def rm_ids(id_list):
|
|
|
|
lock_plist()
|
|
|
|
for id in id_list:
|
|
|
|
if id in song_list:
|
|
|
|
song_list.remove(id)
|
2011-05-12 22:34:36 -04:00
|
|
|
save()
|
2011-05-12 08:11:35 -04:00
|
|
|
unlock_plist()
|
|
|
|
|
2011-05-11 23:05:47 -04:00
|
|
|
def as_set():
|
|
|
|
lock_plist()
|
|
|
|
song_set = set(song_list)
|
|
|
|
unlock_plist()
|
|
|
|
return song_set
|
2011-05-14 08:15:05 -04:00
|
|
|
|
|
|
|
def size():
|
|
|
|
lock_plist()
|
|
|
|
sz = len(song_list)
|
|
|
|
unlock_plist()
|
|
|
|
return sz
|
|
|
|
|
|
|
|
def index(item):
|
|
|
|
lock_plist()
|
|
|
|
try:
|
|
|
|
idx = song_list.index(item)
|
|
|
|
except:
|
|
|
|
idx = -1
|
|
|
|
unlock_plist()
|
|
|
|
return idx
|
|
|
|
|
|
|
|
def get(index):
|
|
|
|
lock_plist()
|
|
|
|
try:
|
|
|
|
item = song_list[index]
|
|
|
|
except:
|
|
|
|
item = None
|
|
|
|
unlock_plist()
|
|
|
|
return item
|