Source code for embypy.objects.videos
from embypy.objects.object import EmbyObject
from embypy.utils.asyncio import async_func
# Generic class
[docs]class Video(EmbyObject):
'''Class representing generic emby video objects
Parameters
----------
object_dict : dict
same as for `EmbyObject`
connector : embypy.utils.connector.Connector
same as for `EmbyObject`
'''
def __init__(self, object_dict, connector):
super().__init__(object_dict, connector)
@property
def aspect_ratio(self):
'''aspect ratio of the video'''
return self.object_dict.get('AspectRatio', 0.0)
@property
def chapters(self):
'''chapters included in the video file'''
return self.object_dict.get('Chapters')
@property
def stream_url(self):
'''stream url (as an mp4)'''
path = '/Videos/{}/stream.mp4'.format(self.id)
return self.connector.get_url(path, attach_api_key=False)
# Videos
[docs]class Movie(Video):
'''Class representing movie objects
Parameters
----------
object_dict : dict
same as for `EmbyObject`
connector : embypy.utils.connector.Connector
same as for `EmbyObject`
'''
def __init__(self, object_dict, connector):
super().__init__(object_dict, connector)
@property
def premiere_date(self):
'''date that the movie permiered'''
return self.object_dict.get('PremiereDate')
[docs]class Episode(Video):
'''Class representing episode objects
Parameters
----------
object_dict : dict
same as for `EmbyObject`
connector : embypy.utils.connector.Connector
same as for `EmbyObject`
'''
def __init__(self, object_dict, connector):
super().__init__(object_dict, connector)
@property
def premiere_date(self):
'''date that the episode permiered'''
return self.object_dict.get('PremiereDate')
@property
def index_number(self):
'''the episode number (in the season)'''
return self.object_dict.get('IndexNumber', 1)
@index_number.setter
def index_number(self, value):
self.object_dict['IndexNumber'] = value
@property
def episode_number(self):
'''the episode number (in the season)'''
return self.index_number
@episode_number.setter
def episode_number(self, value):
self.index_number = value
@property
def season_id(self):
'''season name'''
return self.object_dict.get('SeasonId')
@property
def season_name(self):
'''season name'''
return self.object_dict.get('SeasonName')
@property
def season_number(self):
'''season index'''
return self.object_dict.get('ParentIndexNumber')
@season_id.setter
def season_id(self, value):
self.object_dict['SeasonId'] = value
@property
@async_func
async def season(self):
'''Season that episode is a part of
|coro|
Returns
-------
:class:`embypy.objects.Season`
'''
return await self.process(self.season_id)
@property
def series_id(self):
'''The emby id of the series this episode belongs to'''
return self.object_dict.get('SeriesId')
@property
@async_func
async def series(self):
'''Series that episode is a part of
|coro|
Returns
-------
:class:`embypy.objects.Series`
'''
return await self.process(self.series_id)
@property
@async_func
async def show(self):
return await self.series
@property
def series_name(self):
'''name of the season'''
return self.object_dict.get('SeriesName')
@property
def genres(self):
'''genres for the show'''
return self.object_dict.get('SeriesGenres', [])
[docs]class Trailer(Video):
'''Class representing trailer objects
Parameters
----------
object_dict : dict
same as for `EmbyObject`
connector : embypy.utils.connector.Connector
same as for `EmbyObject`
'''
def __init__(self, object_dict, connector):
super().__init__(object_dict, connector)
[docs]class AdultVideo(Video):
'''Class representing adult vidoe objects
Parameters
----------
object_dict : dict
same as for `EmbyObject`
connector : embypy.utils.connector.Connector
same as for `EmbyObject`
'''
def __init__(self, object_dict, connector):
super().__init__(object_dict, connector)
[docs]class MusicVideo(Video):
'''Class representing music video objects
Parameters
----------
object_dict : dict
same as for `EmbyObject`
connector : embypy.utils.connector.Connector
same as for `EmbyObject`
'''
def __init__(self, object_dict, connector):
super().__init__(object_dict, connector)