def users_playlists(self, kind: str or int or list, user_id: str = None, timeout=None, *args, **kwargs): """Получение плейлиста или списка плейлистов по уникальным идентификаторам. Args: kind (:obj:`str` | :obj:`int` | :obj:`list` из :obj:`str` | :obj:`int`): Уникальный идентификатор плейлиста или их список. user_id: (:obj:`int`, optional): Уникальный идентификатор пользователя владеющим плейлистом. timeout (:obj:`int` | :obj:`float`, optional): Если это значение указано, используется как время ожидания ответа от сервера вместо указанного при создании пула. **kwargs (:obj:`dict`, optional): Произвольные аргументы (будут переданы в запрос). Returns: :obj:`list` из :obj:`yandex_music.Playlist`: Список объектов класса :class:`yandex_music.Playlist` представляющих плейлист, иначе :obj:`None`. Raises: :class:`yandex_music.YandexMusicError` """ if user_id is None: user_id = self.account.uid url = f'{self.base_url}/users/{user_id}/playlists' data = { 'kinds': kind } result = self._request.post(url, data, timeout=timeout, *args, **kwargs) return Playlist.de_list(result, self)
def de_json(cls, data: dict, client: 'Client') -> Optional['BriefInfo']: """Десериализация объекта. Args: data (:obj:`dict`): Поля и значения десериализуемого объекта. client (:obj:`yandex_music.Client`, optional): Клиент Yandex Music. Returns: :obj:`yandex_music.BriefInfo`: Информация об артисте. """ if not data: return None data = super(BriefInfo, cls).de_json(data, client) from yandex_music import Artist, Track, Album, Cover, PlaylistId, Video, Chart, Vinyl, Playlist data['playlists'] = Playlist.de_list(data.get('playlists'), client) data['artist'] = Artist.de_json(data.get('artist'), client) data['similar_artists'] = Artist.de_list(data.get('similar_artists'), client) data['popular_tracks'] = Track.de_list(data.get('popular_tracks'), client) data['albums'] = Album.de_list(data.get('albums'), client) data['also_albums'] = Album.de_list(data.get('also_albums'), client) data['last_releases'] = Album.de_list(data.get('last_releases'), client) data['all_covers'] = Cover.de_list(data.get('all_covers'), client) data['playlist_ids'] = PlaylistId.de_list(data.get('playlist_ids'), client) data['videos'] = Video.de_list(data.get('videos'), client) data['tracks_in_chart'] = Chart.de_list(data.get('tracks_in_chart'), client) data['vinyls'] = Vinyl.de_list(data.get('vinyls'), client) return cls(client=client, **data)
def users_playlists_list(self, user_id: int or str = None, timeout=None, *args, **kwargs): if user_id is None: user_id = self.account.uid url = f'{self.base_url}/users/{user_id}/playlists/list' result = self._request.get(url, timeout=timeout, *args, **kwargs) return Playlist.de_list(result, self)
def de_json(cls, data, client): if not data: return None data = super(PlaylistSearchResult, cls).de_json(data, client) from yandex_music import Playlist data['results'] = Playlist.de_list(data.get('results'), client) return cls(client=client, **data)
def users_playlists(self, kind: str or int or list, user_id: str = None, timeout=None, *args, **kwargs): if user_id is None: user_id = self.account.uid url = f'{self.base_url}/users/{user_id}/playlists' data = {'kinds': kind} result = self._request.post(url, data, timeout=timeout, *args, **kwargs) return Playlist.de_list(result, self)
def test_de_list_none(self, client): assert Playlist.de_list({}, client) == []