# Bryan Schumaker (8/8/2010) __all__ = ["collection"] import libsaria import tagpy call = libsaria.event.call exists = libsaria.path.exists expand = libsaria.path.expand FileRef = tagpy.FileRef LIBRARY = 0 PLAYLIST = 1 QUEUE = 2 import lens import library playlist = lens.Playlist() file_to_id = library.file_to_id play_id = library.play_id get_attr = library.get_attr reset = library.reset inc_score = library.inc_score inc_count = library.inc_count def init(): libsaria.init_pref("random", False) libsaria.event.invite("POSTINIT", init) def toggle_rand(): libsaria.prefs["random"] = not libsaria.prefs["random"] cur_lib_id = -1 def new_source(path, bg=True): global library path = expand(path) if not exists(path): return 0 return call("NEWSOURCE", library.scan, path) def lib_get_cur_id(): global cur_lib_id return cur_lib_id def lib_filter(text): global library library.filter(text) def lib_is_visible(text): global library return library.is_visible(text) def walk_plist(): global playlist global library get_attr = library.get_attr for id in playlist.walk_ids(): yield [get_attr(id, "artist"), get_attr(id, "album"), get_attr(id, "title"), id, get_attr(id, "year"), get_attr(id, "lenstr")] def plist_save(): global playlist playlist.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 = library.get_attr(lib_id, "artist") album = library.get_attr(lib_id, "album") title = library.get_attr(lib_id, "title") playlist.insert_tags(artist, album, title, lib_id) def plist_is_visible(id): global playlist return playlist.is_visible(id) def plist_filter(text): global playlist return playlist.filter(text) def plist_reset(): global playlist playlist.reset() playlist.save() def plist_refresh(): return call("PLISTREFRESH") def choose_next(): global playlist global cur_lib_id if libsaria.prefs["random"] == True: next = playlist.random() else: next = playlist.next_id(cur_lib_id) if next != None: return call("NEXT", play_id, next) def change_score(): prcnt = libsaria.music.get_progress() if prcnt > 0.75: inc_count(cur_lib_id) inc_score(cur_lib_id) if prcnt < 0.33: inc_score(cur_lib_id, -1) def plist_next(): change_score() choose_next() def catch_eos(*args): inc_count(cur_lib_id) inc_score(cur_lib_id) choose_next() libsaria.event.invite("POSTEOS", catch_eos)