From 4ef2c8878d066378c7c1ffbf33e01e320ed33b62 Mon Sep 17 00:00:00 2001 From: Il`ya Date: Wed, 22 Jan 2020 19:43:03 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=BE=D1=81=D1=82=D0=B0=D0=B2=D1=88=D0=B8=D0=B5?= =?UTF-8?q?=D1=81=D1=8F=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D1=8B=20=D1=81?= =?UTF-8?q?=D0=B2=D1=8F=D0=B7=D0=B0=D0=BD=D0=BD=D1=8B=D0=B5=20=D1=81=20?= =?UTF-8?q?=D1=80=D0=B0=D0=B4=D0=B8=D0=BE.=20=D0=94=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D1=82=D0=B0=D1=86=D0=B8=D1=8F=20=D0=BA=20=D0=BD?= =?UTF-8?q?=D0=B8=D0=BC=20#20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yandex_music/client.py | 76 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 72 insertions(+), 4 deletions(-) diff --git a/yandex_music/client.py b/yandex_music/client.py index 0377c5b..f22ba1d 100644 --- a/yandex_music/client.py +++ b/yandex_music/client.py @@ -891,6 +891,23 @@ class Client(YandexMusicObject): @log def rotor_account_status(self, timeout: Union[int, float] = None, *args, **kwargs) -> Optional[Status]: + """Получение статуса пользователя с дополнителньыми полями. + + Данный статус отличается от обычного наличием дополнительных полей, например, `skips_per_hour`. + + Args: + timeout (:obj:`int` | :obj:`float`, optional): Если это значение указано, используется как время ожидания + ответа от сервера вместо указанного при создании пула. + **kwargs (:obj:`dict`, optional): Произвольные аргументы (будут переданы в запрос). + + Returns: + :obj:`yandex_music.Status`: Объекта класса :class:`yandex_music.Status` + представляющий статус пользователя с дополнительными полями от радио, иначе :obj:`None`. + + Raises: + :class:`yandex_music.YandexMusicError` + """ + url = f'{self.base_url}/rotor/account/status' result = self._request.get(url, timeout=timeout, *args, **kwargs) @@ -900,6 +917,21 @@ class Client(YandexMusicObject): @log def rotor_stations_dashboard(self, timeout: Union[int, float] = None, *args, **kwargs) -> Optional[Dashboard]: + """Получение рекомендованных станций текущего пользователя. + + Args: + timeout (:obj:`int` | :obj:`float`, optional): Если это значение указано, используется как время ожидания + ответа от сервера вместо указанного при создании пула. + **kwargs (:obj:`dict`, optional): Произвольные аргументы (будут переданы в запрос). + + Returns: + :obj:`yandex_music.Dashboard`: Объекта класса :class:`yandex_music.Dashboard` + представляющий рекомендованные станции, иначе :obj:`None`. + + Raises: + :class:`yandex_music.YandexMusicError` + """ + url = f'{self.base_url}/rotor/stations/dashboard' result = self._request.get(url, timeout=timeout, *args, **kwargs) @@ -907,8 +939,26 @@ class Client(YandexMusicObject): return Dashboard.de_json(result, self) @log - def rotor_stations_list(self, language: str = 'en', timeout: Union[int, float] = None, + def rotor_stations_list(self, language: str = 'ru', timeout: Union[int, float] = None, *args, **kwargs) -> List[StationResult]: + """Получение всех радиостанций. + + Чтобы определить что за тип станции (жанры, настроения, занятие и т.д.) необходимо смотреть в пол `id_for_from`. + + Args: + language (:obj:`str`): Язык, на котором будет информация о станциях. + timeout (:obj:`int` | :obj:`float`, optional): Если это значение указано, используется как время ожидания + ответа от сервера вместо указанного при создании пула. + **kwargs (:obj:`dict`, optional): Произвольные аргументы (будут переданы в запрос). + + Returns: + :obj:`list` из :obj:`yandex_music.StationResult`: Список объектов класса :class:`yandex_music.StationResult` + представляющих станцию, иначе :obj:`None`. + + Raises: + :class:`yandex_music.YandexMusicError` + """ + url = f'{self.base_url}/rotor/stations/list' result = self._request.get(url, {'language': language}, timeout=timeout, *args, **kwargs) @@ -924,9 +974,9 @@ class Client(YandexMusicObject): Сообщения о начале прослушивания радио, начале и конце трека, его пропуска. - Известные типы фидбека: radioStarted, trackStarted, trackFinished, skip. - Пример station: user:onyourwave, genre:allrock. - Пример from_: mobile-radio-user-123456789. + Известные типы фидбека: `radioStarted`, `trackStarted`, `trackFinished`, `skip`. + Пример `station`: `user:onyourwave`, `genre:allrock`. + Пример `from_`: `mobile-radio-user-123456789`. Args: station (:obj:`str`): Станция. @@ -1028,6 +1078,22 @@ class Client(YandexMusicObject): @log def rotor_station_info(self, station: str, timeout: Union[int, float] = None, *args, **kwargs) -> List[StationResult]: + """Получение информации о станции. + + Args: + station (:obj:`str`): Станция. + timeout (:obj:`int` | :obj:`float`, optional): Если это значение указано, используется как время ожидания + ответа от сервера вместо указанного при создании пула. + **kwargs (:obj:`dict`, optional): Произвольные аргументы (будут переданы в запрос). + + Returns: + :obj:`list` из :obj:`yandex_music.StationResult`: Список из одного объекта класса + :class:`yandex_music.StationResult` представляющего информацию о станции, иначе :obj:`None`. + + Raises: + :class:`yandex_music.YandexMusicError` + """ + url = f'{self.base_url}/rotor/station/{station}/info' result = self._request.get(url, timeout=timeout, *args, **kwargs) @@ -1047,6 +1113,8 @@ class Client(YandexMusicObject): Проход по цепочке до коцна не изучен. Часто встречаются дубликаты. + Все официальные клиенты выполняют запросы с `settings2 = True`. + Args: station (:obj:`str`): Станция. settings2 (:obj:`bool`, optional): Использовать ли второй набор настроек.