From 80ebc1e9bbfe874dc3192c0639ac7c2f40831ce5 Mon Sep 17 00:00:00 2001 From: Gleb Liutsko Date: Thu, 7 May 2020 12:44:08 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=B8=D1=81=D0=BE=D0=B5=D0=B4?= =?UTF-8?q?=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BA=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=BB=D0=BB=D0=B5=D0=BA=D1=82=D0=B8=D0=B2=D0=BD=D0=BE=D0=BC?= =?UTF-8?q?=D1=83=20=D0=BF=D0=BB=D0=B5=D0=B9=D0=BB=D0=B8=D1=81=D1=82=D1=83?= =?UTF-8?q?=20(#317)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yandex_music/client.py | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/yandex_music/client.py b/yandex_music/client.py index 404a81c..2e4ac8b 100644 --- a/yandex_music/client.py +++ b/yandex_music/client.py @@ -1763,6 +1763,41 @@ class Client(YandexMusicObject): """ return self._get_list('playlist', playlist_ids, timeout=timeout, *args, **kwargs) + @log + def playlists_collective_join(self, user_id: Union[str, int], token: str, timeout: Union[int, float] = None, + *args, **kwargs) -> bool: + """Получение плейлиста/плейлистов. + + Note: + Токен можно получить в Web-версии. Для этого, на странице плейлиста нужно нажать на + "Добавить соавтора". В полученной ссылке GET параметр `token` и будет являтся токеном для присоединения. + + В этом методе можно использовать только ID пользователя, с логином не работает. + + Args: + user_id (:obj:`str` | :obj:`int`): Владелец плейлиста. + token (:obj:`str`): Токен для присоединения. + timeout (:obj:`int` | :obj:`float`, optional): Если это значение указано, используется как время ожидания + ответа от сервера вместо указанного при создании пула. + **kwargs: Произвольные аргументы (будут переданы в запрос). + + Returns: + :obj:`bool`: :obj:`True` при успешном выполнении запроса, иначе :obj:`False`. + + Raises: + :class:`yandex_music.exceptions.YandexMusicError`: Базовое исключение библиотеки. + """ + url = f'{self.base_url}/playlists/collective/join' + + params = { + 'uid': user_id, + 'token': token + } + + result = self._request.post(url, params=params, timeout=timeout, *args, **kwargs) + + return result == 'ok' + @log def users_playlists_list(self, user_id: Union[str, int] = None, timeout: Union[int, float] = None, *args, **kwargs) -> List[Playlist]: @@ -2157,6 +2192,8 @@ class Client(YandexMusicObject): usersLikesAlbumsRemove = users_likes_albums_remove #: Псевдоним для :attr:`playlists_list` playlistsList = playlists_list + #: Псевдоним для :attr:`playlists_collective_join` + playlistsCollectiveJoin = playlists_collective_join #: Псевдоним для :attr:`users_playlists_list` usersPlaylistsList = users_playlists_list #: Псевдоним для :attr:`users_likes_tracks`