You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.5 KiB
48 lines
1.5 KiB
6 years ago
|
from plex.objects.core.base import Property
|
||
|
from plex.objects.directory import Directory
|
||
|
from plex.objects.library.metadata.album import Album
|
||
|
from plex.objects.library.metadata.artist import Artist
|
||
|
from plex.objects.library.metadata.base import Metadata
|
||
|
from plex.objects.mixins.scrobble import ScrobbleMixin
|
||
|
from plex.objects.mixins.session import SessionMixin
|
||
|
|
||
|
|
||
|
class Track(Directory, Metadata, SessionMixin, ScrobbleMixin):
|
||
|
artist = Property(resolver=lambda: Track.construct_artist)
|
||
|
album = Property(resolver=lambda: Track.construct_album)
|
||
|
|
||
|
index = Property(type=int)
|
||
|
|
||
|
view_count = Property('viewCount', type=int)
|
||
|
view_offset = Property('viewOffset', type=int)
|
||
|
|
||
|
duration = Property(type=int)
|
||
|
|
||
|
@staticmethod
|
||
|
def construct_artist(client, node):
|
||
|
attribute_map = {
|
||
|
'key': 'grandparentKey',
|
||
|
'ratingKey': 'grandparentRatingKey',
|
||
|
|
||
|
'title': 'grandparentTitle',
|
||
|
|
||
|
'thumb': 'grandparentThumb'
|
||
|
}
|
||
|
|
||
|
return Artist.construct(client, node, attribute_map, child=True)
|
||
|
|
||
|
@staticmethod
|
||
|
def construct_album(client, node):
|
||
|
attribute_map = {
|
||
|
'index': 'parentIndex',
|
||
|
'key': 'parentKey',
|
||
|
'ratingKey': 'parentRatingKey',
|
||
|
|
||
|
'title': 'parentTitle',
|
||
|
'year': 'parentYear',
|
||
|
|
||
|
'thumb': 'parentThumb'
|
||
|
}
|
||
|
|
||
|
return Album.construct(client, node, attribute_map, child=True)
|