mirror of
https://github.com/moparisthebest/SickRage
synced 2024-11-18 07:15:13 -05:00
81 lines
1.9 KiB
Python
81 lines
1.9 KiB
Python
|
from fanart.items import Immutable, LeafItem, ResourceItem, CollectableItem
|
||
|
import fanart
|
||
|
__all__ = (
|
||
|
'BackgroundItem',
|
||
|
'CoverItem',
|
||
|
'LogoItem',
|
||
|
'ThumbItem',
|
||
|
'DiscItem',
|
||
|
'Artist',
|
||
|
'Album',
|
||
|
)
|
||
|
|
||
|
|
||
|
class BackgroundItem(LeafItem):
|
||
|
KEY = fanart.TYPE.MUSIC.BACKGROUND
|
||
|
|
||
|
|
||
|
class CoverItem(LeafItem):
|
||
|
KEY = fanart.TYPE.MUSIC.COVER
|
||
|
|
||
|
|
||
|
class LogoItem(LeafItem):
|
||
|
KEY = fanart.TYPE.MUSIC.LOGO
|
||
|
|
||
|
|
||
|
class ThumbItem(LeafItem):
|
||
|
KEY = fanart.TYPE.MUSIC.THUMB
|
||
|
|
||
|
|
||
|
class DiscItem(LeafItem):
|
||
|
KEY = fanart.TYPE.MUSIC.DISC
|
||
|
|
||
|
@Immutable.mutablemethod
|
||
|
def __init__(self, id, url, likes, disc, size):
|
||
|
super(DiscItem, self).__init__(id, url, likes)
|
||
|
self.disc = int(disc)
|
||
|
self.size = int(size)
|
||
|
|
||
|
|
||
|
class Artist(ResourceItem):
|
||
|
WS = fanart.WS.MUSIC
|
||
|
|
||
|
@Immutable.mutablemethod
|
||
|
def __init__(self, name, mbid, albums, backgrounds, logos, thumbs):
|
||
|
self.name = name
|
||
|
self.mbid = mbid
|
||
|
self.albums = albums
|
||
|
self.backgrounds = backgrounds
|
||
|
self.logos = logos
|
||
|
self.thumbs = thumbs
|
||
|
|
||
|
@classmethod
|
||
|
def from_dict(cls, resource):
|
||
|
assert len(resource) == 1, 'Bad Format Map'
|
||
|
name, resource = resource.items()[0]
|
||
|
return cls(
|
||
|
name=name,
|
||
|
mbid=resource['mbid_id'],
|
||
|
albums=Album.collection_from_dict(resource.get('albums', {})),
|
||
|
backgrounds=BackgroundItem.extract(resource),
|
||
|
thumbs=ThumbItem.extract(resource),
|
||
|
logos=LogoItem.extract(resource),
|
||
|
)
|
||
|
|
||
|
|
||
|
class Album(CollectableItem):
|
||
|
|
||
|
@Immutable.mutablemethod
|
||
|
def __init__(self, mbid, covers, arts):
|
||
|
self.mbid = mbid
|
||
|
self.covers = covers
|
||
|
self.arts = arts
|
||
|
|
||
|
@classmethod
|
||
|
def from_dict(cls, key, resource):
|
||
|
return cls(
|
||
|
mbid=key,
|
||
|
covers=CoverItem.extract(resource),
|
||
|
arts=DiscItem.extract(resource),
|
||
|
)
|