Source code for embypy.objects.misc

from embypy.objects.object import EmbyObject
from embypy.utils.asyncio import async_func


# Generic class
[docs]class Audio(EmbyObject): '''Class representing generic emby Audio 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 album_id(self): '''the id of the album this song is in''' return self.object_dict.get('AlbumId') @property def album_name(self): '''name of album ''' return self.object_dict.get('Album', '') @property @async_func async def album(self): '''The album that the song belongs to |coro| Returns ------- :class:`embypy.objects.MusicAlbum` ''' return await self.process(self.album_id) @property def index_number(self): '''track number on disc''' return self.object_dict.get('IndexNumber', 1) @index_number.setter def index_number(self, value): self.object_dict['IndexNumber'] = value @property def track_number(self): '''track number on disc''' return self.index_number @track_number.setter def track_number(self, value): self.index_number = value @property def album_artist_ids(self): '''list of album artist ids''' return [a['Id'] for a in self.object_dict.get('AlbumArtists', [])] @property def album_artist_names(self): '''names of album artists''' return self.object_dict.get('AlbumArtist', '').split(';') @property @async_func async def album_artists(self): ''' |coro| Returns ------- list of type :class:`embypy.objects.MusicArtist` ''' return await self.process(self.album_artist_ids) @property def artist_ids(self): return [a['Id'] for a in self.object_dict.get('ArtistItems', [])] @property def artist_names(self): '''names of song artists''' return self.object_dict.get('Artists', []) @property @async_func async def artists(self): ''' |coro| Returns ------- list of type :class:`embypy.objects.MusicArtist` ''' return await self.process(self.artist_ids) @property def album_primary_image_tag(self): '''The image tag of the album''' return self.object_dict.get('AlbumPrimaryImageTag') @property def album_primary_image_url(self): '''The image of the album''' path = '/Items/{}/Images/Primary'.format(self.album_id) return self.connector.get_url(path, attach_api_key=False) @property def media_type(self): return self.object_dict.get('MediaType', 'Audio') @property def type(self): return self.object_dict.get('Type', 'Audio') @property def stream_url(self): '''stream for this song - not re-encoded''' path = '/Audio/{}/universal'.format(self.id) return self.connector.get_url( path, userId=self.connector.userid, MaxStreamingBitrate=140000000, Container='opus', TranscodingContainer='opus', AudioCodec='opus', MaxSampleRate=48000, PlaySessionId=1496213367201 # TODO no hard code )
[docs]class Person(EmbyObject): '''Class representing emby people 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 role(self): '''Role the person played as''' return self.object_dict.get('Role', '') @role.setter def role(self, value): self.object_dict['Role'] = value @property def type(self): return self.object_dict.get('Type', 'Person') @property def primary_image_tag(self): return self.object_dict.get('PrimaryImageTag') @property def premiere_date(self): return self.object_dict.get('PremiereDate')
[docs]class Image(EmbyObject): '''Class representing emby image 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)
# Game
[docs]class Game(EmbyObject): '''Class representing emby game 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)
class Photo(EmbyObject): '''Class representing emby photo 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) # Book
[docs]class Book(EmbyObject): '''Class representing emby book 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)
# Device class Device(EmbyObject): '''Class representing emby device 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 last_user_name(self): return self.object_dict.get('LastUserName') @property def last_user_id(self): return self.object_dict.get('LastUserId') @property def app_name(self): return self.object_dict.get('AppName') @property def app_version(self): return self.object_dict.get('AppVersion') @property def date_last_activity(self): return self.object_dict.get('DateLastActivity') @property def icon_url(self): return self.object_dict.get('IconUrl') class User(EmbyObject): '''Class representing emby user 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 id(self): return self.object_dict.get('Id') @property def name(self): return self.object_dict.get('Name') @property def has_password(self): return self.object_dict.get('HasPassword') @property def has_configured_password(self): return self.object_dict.get('HasConfiguredPassword') @property def has__configured_easy_password(self): return self.object_dict.get('HasConfiguredEasyPassword') @property def configuration(self): return self.object_dict.get('Configuration') @property def policy(self): return self.object_dict.get('Policy')