64 lines
1.4 KiB
Python
64 lines
1.4 KiB
Python
import Music
|
|
import pickle
|
|
|
|
class MusicQueue():
|
|
queue = []
|
|
|
|
def __init__(self):
|
|
self.queue = []
|
|
|
|
def push(self, element: Music):
|
|
self.queue.append(element)
|
|
|
|
def pop(self):
|
|
self.queue.pop(0)
|
|
|
|
def front(self) -> Music:
|
|
return self.queue[0]
|
|
|
|
def clear(self):
|
|
self.queue = []
|
|
|
|
def elevate(self, target: Music):
|
|
# elevate target to 1st place
|
|
self.queue.remove(target)
|
|
self.queue.insert(0, target)
|
|
|
|
def find(self, target: Music) -> Music or None:
|
|
for i in self.queue:
|
|
if i == target:
|
|
return i
|
|
return None
|
|
|
|
def count(self, target: Music):
|
|
count = 0
|
|
for i in self.queue:
|
|
if i == target:
|
|
count += 1
|
|
return count
|
|
|
|
def findAndElevate(self, target: Music):
|
|
target = self.find(target)
|
|
if target is not None:
|
|
self.elevate(target)
|
|
|
|
def delete(self, target: Music):
|
|
target = self.find(target)
|
|
if target is not None:
|
|
self.queue.remove(target)
|
|
|
|
def size(self):
|
|
return len(self.queue)
|
|
|
|
def dict(self):
|
|
return [i.dict() for i in self.queue]
|
|
|
|
def __str__(self):
|
|
return str(self.queue)
|
|
|
|
def dump(self):
|
|
return pickle.dumps(self.queue)
|
|
|
|
def load(self, data: bytes):
|
|
self.queue = pickle.loads(data)
|
|
|