forked from platypush/platypush
[media.jellyfin] Several improvements on schema definitions.
This commit is contained in:
parent
12c800b7a9
commit
3e61bd7a9b
1 changed files with 3 additions and 14 deletions
|
@ -11,6 +11,8 @@ logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class JellyfinSchema(Schema):
|
class JellyfinSchema(Schema):
|
||||||
|
can_delete = fields.Boolean(attribute='CanDelete')
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
if 'id' in self.fields:
|
if 'id' in self.fields:
|
||||||
|
@ -133,12 +135,6 @@ class JellyfinTrackSchema(JellyfinSchema):
|
||||||
data['community_rating'] *= 10
|
data['community_rating'] *= 10
|
||||||
return data
|
return data
|
||||||
|
|
||||||
@post_dump
|
|
||||||
def _normalize_duration(self, data: dict, **_) -> dict:
|
|
||||||
if data.get('duration'):
|
|
||||||
data['duration'] //= 1e7
|
|
||||||
return data
|
|
||||||
|
|
||||||
@post_dump
|
@post_dump
|
||||||
def _add_title(self, data: dict, **_) -> dict:
|
def _add_title(self, data: dict, **_) -> dict:
|
||||||
if not data.get('title'):
|
if not data.get('title'):
|
||||||
|
@ -185,7 +181,6 @@ class JellyfinCollectionSchema(JellyfinSchema, MediaCollectionSchema):
|
||||||
class JellyfinVideoSchema(JellyfinSchema, MediaVideoSchema):
|
class JellyfinVideoSchema(JellyfinSchema, MediaVideoSchema):
|
||||||
type = fields.Constant('video')
|
type = fields.Constant('video')
|
||||||
item_type = fields.Constant('video')
|
item_type = fields.Constant('video')
|
||||||
path = fields.String(attribute='Path')
|
|
||||||
duration = fields.Number(attribute='RunTimeTicks')
|
duration = fields.Number(attribute='RunTimeTicks')
|
||||||
community_rating = fields.Number(attribute='CommunityRating')
|
community_rating = fields.Number(attribute='CommunityRating')
|
||||||
container = fields.String(
|
container = fields.String(
|
||||||
|
@ -196,7 +191,6 @@ class JellyfinVideoSchema(JellyfinSchema, MediaVideoSchema):
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
critic_rating = fields.Number(attribute='CriticRating')
|
critic_rating = fields.Number(attribute='CriticRating')
|
||||||
created_at = DateTime(attribute='DateCreated')
|
|
||||||
imdb_url = fields.URL(
|
imdb_url = fields.URL(
|
||||||
attribute='ExternalUrl',
|
attribute='ExternalUrl',
|
||||||
metadata={
|
metadata={
|
||||||
|
@ -214,6 +208,7 @@ class JellyfinVideoSchema(JellyfinSchema, MediaVideoSchema):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.fields['year'].attribute = 'ProductionYear'
|
self.fields['year'].attribute = 'ProductionYear'
|
||||||
self.fields['has_subtitles'].attribute = 'HasSubtitles'
|
self.fields['has_subtitles'].attribute = 'HasSubtitles'
|
||||||
|
self.fields['created_at'].attribute = 'DateCreated'
|
||||||
|
|
||||||
@post_dump
|
@post_dump
|
||||||
def _normalize_community_rating(self, data: dict, **_) -> dict:
|
def _normalize_community_rating(self, data: dict, **_) -> dict:
|
||||||
|
@ -221,12 +216,6 @@ class JellyfinVideoSchema(JellyfinSchema, MediaVideoSchema):
|
||||||
data['community_rating'] *= 10
|
data['community_rating'] *= 10
|
||||||
return data
|
return data
|
||||||
|
|
||||||
@post_dump
|
|
||||||
def _normalize_duration(self, data: dict, **_) -> dict:
|
|
||||||
if data.get('duration'):
|
|
||||||
data['duration'] //= 1e7
|
|
||||||
return data
|
|
||||||
|
|
||||||
@pre_dump
|
@pre_dump
|
||||||
def _extract_imdb_url(self, data: dict, **_) -> dict:
|
def _extract_imdb_url(self, data: dict, **_) -> dict:
|
||||||
external_urls = data.get('ExternalUrls', [])
|
external_urls = data.get('ExternalUrls', [])
|
||||||
|
|
Loading…
Reference in a new issue