deemix-py/deemix/app/queueitem.py

116 lines
4.4 KiB
Python
Raw Normal View History

class QueueItem:
2020-09-28 18:31:48 +00:00
def __init__(self, id=None, bitrate=None, title=None, artist=None, cover=None, explicit=False, size=None, type=None, settings=None, queueItemDict=None):
if queueItemDict:
self.title = queueItemDict['title']
self.artist = queueItemDict['artist']
self.cover = queueItemDict['cover']
self.explicit = queueItemDict.get('explicit', False)
self.size = queueItemDict['size']
self.type = queueItemDict['type']
self.id = queueItemDict['id']
self.bitrate = queueItemDict['bitrate']
2020-10-01 10:56:51 +00:00
self.extrasPath = queueItemDict.get('extrasPath', '')
self.files = queueItemDict['files']
self.downloaded = queueItemDict['downloaded']
self.failed = queueItemDict['failed']
self.errors = queueItemDict['errors']
self.progress = queueItemDict['progress']
2020-08-18 13:13:32 +00:00
self.settings = queueItemDict.get('settings')
else:
self.title = title
2020-08-15 21:03:05 +00:00
self.artist = artist
self.cover = cover
2020-09-28 18:31:48 +00:00
self.explicit = explicit
2020-08-15 21:03:05 +00:00
self.size = size
self.type = type
self.id = id
self.bitrate = bitrate
2020-10-01 10:56:51 +00:00
self.extrasPath = None
self.files = []
self.settings = settings
self.downloaded = 0
self.failed = 0
self.errors = []
self.progress = 0
2020-08-15 21:03:05 +00:00
self.uuid = f"{self.type}_{self.id}_{self.bitrate}"
2020-08-14 20:28:26 +00:00
self.cancel = False
self.ack = None
def toDict(self):
2020-08-14 20:28:26 +00:00
return {
'title': self.title,
2020-08-15 21:03:05 +00:00
'artist': self.artist,
'cover': self.cover,
2020-09-28 18:31:48 +00:00
'explicit': self.explicit,
2020-08-15 21:03:05 +00:00
'size': self.size,
2020-10-01 10:56:51 +00:00
'extrasPath': self.extrasPath,
'files': self.files,
2020-08-15 21:03:05 +00:00
'downloaded': self.downloaded,
'failed': self.failed,
'errors': self.errors,
2020-08-15 21:03:05 +00:00
'progress': self.progress,
'type': self.type,
'id': self.id,
'bitrate': self.bitrate,
'uuid': self.uuid,
'ack': self.ack
}
def getResettedItem(self):
item = self.toDict()
item['downloaded'] = 0
item['failed'] = 0
item['progress'] = 0
item['errors'] = []
return item
def getSlimmedItem(self):
light = self.toDict()
propertiesToDelete = ['single', 'collection', '_EXTRA', 'settings']
for property in propertiesToDelete:
if property in light:
del light[property]
return light
class QISingle(QueueItem):
2020-09-28 18:31:48 +00:00
def __init__(self, id=None, bitrate=None, title=None, artist=None, cover=None, explicit=False, type=None, settings=None, single=None, queueItemDict=None):
if queueItemDict:
super().__init__(queueItemDict=queueItemDict)
self.single = queueItemDict['single']
else:
2020-09-28 18:31:48 +00:00
super().__init__(id, bitrate, title, artist, cover, explicit, 1, type, settings)
self.single = single
def toDict(self):
queueItem = super().toDict()
queueItem['single'] = self.single
return queueItem
class QICollection(QueueItem):
2020-09-28 18:31:48 +00:00
def __init__(self, id=None, bitrate=None, title=None, artist=None, cover=None, explicit=False, size=None, type=None, settings=None, collection=None, queueItemDict=None):
if queueItemDict:
super().__init__(queueItemDict=queueItemDict)
self.collection = queueItemDict['collection']
else:
2020-09-28 18:31:48 +00:00
super().__init__(id, bitrate, title, artist, cover, explicit, size, type, settings)
self.collection = collection
def toDict(self):
queueItem = super().toDict()
queueItem['collection'] = self.collection
return queueItem
2020-08-14 20:28:26 +00:00
2020-08-15 21:03:05 +00:00
class QIConvertable(QICollection):
2020-09-28 18:31:48 +00:00
def __init__(self, id=None, bitrate=None, title=None, artist=None, cover=None, explicit=False, size=None, type=None, settings=None, extra=None, queueItemDict=None):
if queueItemDict:
super().__init__(queueItemDict=queueItemDict)
self.extra = queueItemDict['_EXTRA']
2020-08-14 20:28:26 +00:00
else:
2020-09-28 18:31:48 +00:00
super().__init__(id, bitrate, title, artist, cover, explicit, size, type, settings, [])
2020-08-14 20:28:26 +00:00
self.extra = extra
def toDict(self):
queueItem = super().toDict()
queueItem['_EXTRA'] = self.extra
return queueItem