def de_json(cls, data: dict, client: 'Client') -> Optional['TrackWithAds']: if not data: return None data = super(TrackWithAds, cls).de_json(data, client) from yandex_music import Track data['track'] = Track.de_json(data.get('track'), client) return cls(client=client, **data)
def de_json(cls, data, client): if not data: return None data = super(Sequence, cls).de_json(data, client) from yandex_music import Track data['track'] = Track.de_json(data.get('track'), client) return cls(client=client, **data)
def de_json(cls, data, client): if not data: return None data = super(ChartItem, cls).de_json(data, client) from yandex_music import Chart, Track data['track'] = Track.de_json(data.get('track'), client) data['chart'] = Chart.de_json(data.get('chart'), client) return cls(client=client, **data)
def test_de_json_required(self, client, artist, album): json_dict = { 'id': self.id, 'title': self.title, 'available': self.available, 'artists': [artist.to_dict()], 'albums': [album.to_dict()] } track = Track.de_json(json_dict, client) assert track.id == self.id assert track.title == self.title assert track.available == self.available assert track.artists == [artist] assert track.albums == [album]
def de_json(cls, data: dict, client: 'Client') -> Optional['TrackWithAds']: """Десериализация объекта. Args: data (:obj:`dict`): Поля и значения десериализуемого объекта. client (:obj:`yandex_music.Client`, optional): Клиент Yandex Music. Returns: :obj:`yandex_music.TrackWithAds`: Трек с рекламой. """ if not data: return None data = super(TrackWithAds, cls).de_json(data, client) from yandex_music import Track data['track'] = Track.de_json(data.get('track'), client) return cls(client=client, **data)
def de_json(cls, data: dict, client: 'Client') -> Optional['Sequence']: """Десериализация объекта. Args: data (:obj:`dict`): Поля и значения десериализуемого объекта. client (:obj:`yandex_music.Client`, optional): Клиент Yandex Music. Returns: :obj:`yandex_music.Sequence`: Звено последовательности. """ if not data: return None data = super(Sequence, cls).de_json(data, client) from yandex_music import Track data['track'] = Track.de_json(data.get('track'), client) return cls(client=client, **data)
def de_json(cls, data, client): """Десериализация объекта. Args: data (:obj:`dict`): Поля и значения десериализуемого объекта. client (:obj:`yandex_music.Client`): Объект класса :class:`yandex_music.Client`, представляющий клиент Yandex Music. Returns: :obj:`yandex_music.TrackWithAds`: Объект класса :class:`yandex_music.TrackWithAds`. """ if not data: return None data = super(TrackWithAds, cls).de_json(data, client) from yandex_music import Track data['track'] = Track.de_json(data.get('track'), client) return cls(client=client, **data)
def de_json(cls, data: dict, client: 'Client') -> Optional['ChartItem']: """Десериализация объекта. Args: data (:obj:`dict`): Поля и значения десериализуемого объекта. client (:obj:`yandex_music.Client`, optional): Клиент Yandex Music. Returns: :obj:`yandex_music.ChartItem`: Трек в чарте. """ if not data: return None data = super(ChartItem, cls).de_json(data, client) from yandex_music import Chart, Track data['track'] = Track.de_json(data.get('track'), client) data['chart'] = Chart.de_json(data.get('chart'), client) return cls(client=client, **data)
def de_json(cls, data: dict, client: 'Client') -> Optional['TrackShort']: """Десериализация объекта. Args: data (:obj:`dict`): Поля и значения десериализуемого объекта. client (:obj:`yandex_music.Client`, optional): Клиент Yandex Music. Returns: :obj:`yandex_music.TrackShort`: Укороченная версия трека с неполными данными. """ if not data: return None data = super(TrackShort, cls).de_json(data, client) from yandex_music import Track, Chart data['track'] = Track.de_json(data.get('track'), client) data['chart'] = Chart.de_json(data.get('chart'), client) return cls(client=client, **data)
def de_json(cls, data: dict, client: 'Client') -> Optional['SimilarTracks']: """Десериализация объекта. Args: data (:obj:`dict`): Поля и значения десериализуемого объекта. client (:obj:`yandex_music.Client`, optional): Клиент Yandex Music. Returns: :obj:`yandex_music.SimilarTracks`: Список похожих треков на другой трек. """ if not data: return None data = super(SimilarTracks, cls).de_json(data, client) from yandex_music import Track data['track'] = Track.de_json(data.get('track'), client) data['similar_tracks'] = Track.de_list(data.get('similar_tracks'), client) return cls(client=client, **data)
def test_de_json_all(self, client, artist, album, major, normalization): json_dict = { 'id': self.id, 'title': self.title, 'available': self.available, 'available_for_premium_users': self.available_for_premium_users, 'artists': [artist.to_dict()], 'albums': [album.to_dict()], 'lyrics_available': self.lyrics_available, 'real_id': self.real_id, 'og_image': self.og_image, 'type': self.type, 'cover_uri': self.cover_uri, 'major': major.to_dict(), 'duration_ms': self.duration_ms, 'storage_dir': self.storage_dir, 'file_size': self.file_size, 'normalization': normalization.to_dict(), 'error': self.error, 'regions': self.regions, 'available_as_rbt': self.available_as_rbt, 'content_warning': self.content_warning, 'explicit': self.explicit, 'preview_duration_ms': self.preview_duration_ms, 'available_full_without_permission': self.available_full_without_permission } track = Track.de_json(json_dict, client) assert track.id == self.id assert track.title == self.title assert track.available == self.available assert track.available_for_premium_users == self.available_for_premium_users assert track.artists == [artist] assert track.albums == [album] assert track.lyrics_available == self.lyrics_available assert track.real_id == self.real_id assert track.og_image == self.og_image assert track.type == self.type assert track.cover_uri == self.cover_uri assert track.major == major assert track.duration_ms == self.duration_ms assert track.storage_dir == self.storage_dir assert track.file_size == self.file_size assert track.normalization == normalization assert track.error == self.error assert track.regions == self.regions assert track.available_as_rbt == self.available_as_rbt assert track.content_warning == self.content_warning assert track.explicit == self.explicit assert track.preview_duration_ms == self.preview_duration_ms assert track.available_full_without_permission == self.available_full_without_permission
def test_de_json_required(self, client, artist, album): json_dict = {'id_': self.id} track = Track.de_json(json_dict, client) assert track.id == self.id
def test_de_json_none(self, client): assert Track.de_json({}, client) is None
def test_de_json_all( self, client, artist, album, major, normalization, track_without_nested_tracks, user, meta_data, poetry_lover_match, ): json_dict = { 'id_': self.id, 'title': self.title, 'available': self.available, 'available_for_premium_users': self.available_for_premium_users, 'artists': [artist.to_dict()], 'albums': [album.to_dict()], 'lyrics_available': self.lyrics_available, 'best': self.best, 'real_id': self.real_id, 'og_image': self.og_image, 'type_': self.type, 'cover_uri': self.cover_uri, 'major': major.to_dict(), 'duration_ms': self.duration_ms, 'storage_dir': self.storage_dir, 'file_size': self.file_size, 'normalization': normalization.to_dict(), 'error': self.error, 'regions': self.regions, 'available_as_rbt': self.available_as_rbt, 'content_warning': self.content_warning, 'explicit': self.explicit, 'preview_duration_ms': self.preview_duration_ms, 'version': self.version, 'available_full_without_permission': self.available_full_without_permission, 'remember_position': self.remember_position, 'substituted': track_without_nested_tracks.to_dict(), 'matched_track': track_without_nested_tracks.to_dict(), 'can_publish': self.can_publish, 'state': self.state, 'desired_visibility': self.desired_visibility, 'filename': self.filename, 'user_info': user.to_dict(), 'meta_data': meta_data.to_dict(), 'poetry_lover_matches': [poetry_lover_match.to_dict()], 'background_video_uri': self.background_video_uri, 'short_description': self.short_description, 'is_suitable_for_children': self.is_suitable_for_children, } track = Track.de_json(json_dict, client) assert track.id == self.id assert track.title == self.title assert track.available == self.available assert track.available_for_premium_users == self.available_for_premium_users assert track.artists == [artist] assert track.albums == [album] assert track.lyrics_available == self.lyrics_available assert track.poetry_lover_matches == [poetry_lover_match] assert track.best == self.best assert track.real_id == self.real_id assert track.og_image == self.og_image assert track.type == self.type assert track.cover_uri == self.cover_uri assert track.major == major assert track.duration_ms == self.duration_ms assert track.storage_dir == self.storage_dir assert track.file_size == self.file_size assert track.substituted == track_without_nested_tracks assert track.matched_track == track_without_nested_tracks assert track.normalization == normalization assert track.error == self.error assert track.meta_data == meta_data assert track.regions == self.regions assert track.available_as_rbt == self.available_as_rbt assert track.content_warning == self.content_warning assert track.explicit == self.explicit assert track.preview_duration_ms == self.preview_duration_ms assert track.available_full_without_permission == self.available_full_without_permission assert track.version == self.version assert track.remember_position == self.remember_position assert track.can_publish == self.can_publish assert track.state == self.state assert track.desired_visibility == self.desired_visibility assert track.filename == self.filename assert track.user_info == user assert track.background_video_uri == self.background_video_uri assert track.short_description == self.short_description assert track.is_suitable_for_children == self.is_suitable_for_children