emmental/trackdb/user.py

57 lines
1.3 KiB
Python
Raw Normal View History

# Copyright 2021 (c) Anna Schumaker.
from lib import tag
from lib import tagstore
class CollectionTag(tag.Tag):
def __init__(self):
tag.Tag.__init__(self, "Collection")
self.loop = True
def can_loop(self): return False
class NewTracksTag(tag.Tag):
def __init__(self):
tag.Tag.__init__(self, "New Tracks")
def __getstate__(self):
state = super().__getstate__()
state["tracks"].clear()
return state
class PreviousTag(tag.Tag):
def __init__(self):
tag.Tag.__init__(self, "Previous")
def __getstate__(self):
state = super().__getstate__()
state["tracks"].clear()
return state
def can_random(self): return False
def can_loop(self): return False
def add_track(self, track):
with self.lock:
self.tracks.insert(0, track)
self.current = 0
self.TrackAdded.publish(self, track, 0)
class UpNextTag(tag.Tag):
def __init__(self):
tag.Tag.__init__(self, "Up Next")
def can_loop(self): return False
def next(self):
track = super().next()
if track is not None:
self.remove_track(track)
with self.lock:
self.current -= 1
if len(self.tracks) == 0:
self.random = False
return track