2021-07-07 13:27:52 -04:00
|
|
|
# Copyright 2021 (c) Anna Schumaker.
|
|
|
|
from . import tags
|
|
|
|
|
|
|
|
class TagStack:
|
|
|
|
def __init__(self):
|
|
|
|
self.tags = [ ]
|
|
|
|
|
2021-07-07 13:39:54 -04:00
|
|
|
def __do_next__(self, tag):
|
|
|
|
if track := tag.next():
|
|
|
|
track.add_to_playlist("Previous")
|
|
|
|
return track
|
|
|
|
|
|
|
|
def next(self):
|
|
|
|
if len(self.tags) == 0:
|
|
|
|
return self.__do_next__(tags.User["Collection"])
|
|
|
|
if track := self.__do_next__(self.tags[0]):
|
|
|
|
return track
|
|
|
|
self.pop()
|
|
|
|
return self.next()
|
|
|
|
|
2021-07-07 13:27:52 -04:00
|
|
|
def pop(self):
|
|
|
|
self.tags.pop(0)
|
|
|
|
|
2021-07-07 13:39:54 -04:00
|
|
|
def previous(self):
|
|
|
|
return tags.User["Previous"].next()
|
|
|
|
|
2021-07-07 13:27:52 -04:00
|
|
|
def push(self, tag):
|
|
|
|
if tag == tags.User["Previous"]:
|
|
|
|
return
|
|
|
|
if tag == tags.User["Collection"]:
|
|
|
|
self.tags.clear()
|
|
|
|
return
|
|
|
|
if tag in self.tags:
|
|
|
|
self.tags.remove(tag)
|
|
|
|
self.tags.insert(0, tag)
|
|
|
|
tag.stacked()
|
2021-07-07 13:56:11 -04:00
|
|
|
|
|
|
|
def queue(self, track):
|
|
|
|
track.add_to_playlist("Up Next")
|
|
|
|
self.push(tags.User["Up Next"])
|