From 0f860f67e5b817bdba2b8ff810dfff2a1ad4ab65 Mon Sep 17 00:00:00 2001 From: Il`ya Date: Sun, 26 Jan 2020 02:55:56 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D1=82=D0=B0=D1=86=D0=B8=D1=8F.=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=B4=D0=BB=D1=8F?= =?UTF-8?q?=20UserSettings.=20#195?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...t.rst => yandex_music.account.account.rst} | 0 ...> yandex_music.account.auto_renewable.rst} | 0 ...> yandex_music.account.passport_phone.rst} | 0 ...t => yandex_music.account.permissions.rst} | 0 ...plus.rst => yandex_music.account.plus.rst} | 0 ...ice.rst => yandex_music.account.price.rst} | 0 ...t.rst => yandex_music.account.product.rst} | 0 docs/source/yandex_music.account.rst | 15 ++ ...us.rst => yandex_music.account.status.rst} | 0 ... => yandex_music.account.subscription.rst} | 0 .../yandex_music.account.user_settings.rst | 6 + docs/source/yandex_music.rst | 2 +- docs/source/yandex_music.status.rst | 14 -- yandex_music/account/account.py | 2 +- yandex_music/account/permissions.py | 2 +- yandex_music/account/status.py | 16 +- yandex_music/account/subscription.py | 2 +- yandex_music/account/user_settings.py | 45 ++++- yandex_music/artist/artist_albums.py | 2 +- yandex_music/artist/artist_tracks.py | 2 +- yandex_music/client.py | 166 ++++++++++++------ yandex_music/cover.py | 2 +- yandex_music/download_info.py | 2 +- yandex_music/icon.py | 2 +- yandex_music/invocation_info.py | 2 +- yandex_music/pager.py | 2 +- yandex_music/permission_alerts.py | 2 +- yandex_music/playlist/playlist_absence.py | 2 +- yandex_music/playlist/user.py | 2 +- yandex_music/promo_code_status.py | 2 +- yandex_music/search/search.py | 2 +- yandex_music/track_short.py | 2 +- yandex_music/tracks_list.py | 2 +- yandex_music/utils/captcha_response.py | 2 +- yandex_music/utils/request.py | 2 +- 35 files changed, 202 insertions(+), 100 deletions(-) rename docs/source/{yandex_music.status.account.rst => yandex_music.account.account.rst} (100%) rename docs/source/{yandex_music.status.auto_renewable.rst => yandex_music.account.auto_renewable.rst} (100%) rename docs/source/{yandex_music.status.passport_phone.rst => yandex_music.account.passport_phone.rst} (100%) rename docs/source/{yandex_music.status.permissions.rst => yandex_music.account.permissions.rst} (100%) rename docs/source/{yandex_music.status.plus.rst => yandex_music.account.plus.rst} (100%) rename docs/source/{yandex_music.status.price.rst => yandex_music.account.price.rst} (100%) rename docs/source/{yandex_music.status.product.rst => yandex_music.account.product.rst} (100%) create mode 100644 docs/source/yandex_music.account.rst rename docs/source/{yandex_music.status.status.rst => yandex_music.account.status.rst} (100%) rename docs/source/{yandex_music.status.subscription.rst => yandex_music.account.subscription.rst} (100%) create mode 100644 docs/source/yandex_music.account.user_settings.rst delete mode 100644 docs/source/yandex_music.status.rst diff --git a/docs/source/yandex_music.status.account.rst b/docs/source/yandex_music.account.account.rst similarity index 100% rename from docs/source/yandex_music.status.account.rst rename to docs/source/yandex_music.account.account.rst diff --git a/docs/source/yandex_music.status.auto_renewable.rst b/docs/source/yandex_music.account.auto_renewable.rst similarity index 100% rename from docs/source/yandex_music.status.auto_renewable.rst rename to docs/source/yandex_music.account.auto_renewable.rst diff --git a/docs/source/yandex_music.status.passport_phone.rst b/docs/source/yandex_music.account.passport_phone.rst similarity index 100% rename from docs/source/yandex_music.status.passport_phone.rst rename to docs/source/yandex_music.account.passport_phone.rst diff --git a/docs/source/yandex_music.status.permissions.rst b/docs/source/yandex_music.account.permissions.rst similarity index 100% rename from docs/source/yandex_music.status.permissions.rst rename to docs/source/yandex_music.account.permissions.rst diff --git a/docs/source/yandex_music.status.plus.rst b/docs/source/yandex_music.account.plus.rst similarity index 100% rename from docs/source/yandex_music.status.plus.rst rename to docs/source/yandex_music.account.plus.rst diff --git a/docs/source/yandex_music.status.price.rst b/docs/source/yandex_music.account.price.rst similarity index 100% rename from docs/source/yandex_music.status.price.rst rename to docs/source/yandex_music.account.price.rst diff --git a/docs/source/yandex_music.status.product.rst b/docs/source/yandex_music.account.product.rst similarity index 100% rename from docs/source/yandex_music.status.product.rst rename to docs/source/yandex_music.account.product.rst diff --git a/docs/source/yandex_music.account.rst b/docs/source/yandex_music.account.rst new file mode 100644 index 0000000..af404f9 --- /dev/null +++ b/docs/source/yandex_music.account.rst @@ -0,0 +1,15 @@ +Пакет yandex_music.account +========================== + +.. toctree:: + + yandex_music.account.status + yandex_music.account.account + yandex_music.account.passport_phone + yandex_music.account.plus + yandex_music.account.permissions + yandex_music.account.subscription + yandex_music.account.auto_renewable + yandex_music.account.product + yandex_music.account.price + yandex_music.account.user_settings \ No newline at end of file diff --git a/docs/source/yandex_music.status.status.rst b/docs/source/yandex_music.account.status.rst similarity index 100% rename from docs/source/yandex_music.status.status.rst rename to docs/source/yandex_music.account.status.rst diff --git a/docs/source/yandex_music.status.subscription.rst b/docs/source/yandex_music.account.subscription.rst similarity index 100% rename from docs/source/yandex_music.status.subscription.rst rename to docs/source/yandex_music.account.subscription.rst diff --git a/docs/source/yandex_music.account.user_settings.rst b/docs/source/yandex_music.account.user_settings.rst new file mode 100644 index 0000000..a6f5443 --- /dev/null +++ b/docs/source/yandex_music.account.user_settings.rst @@ -0,0 +1,6 @@ +yandex_music.UserSettings +========================= + +.. autoclass:: yandex_music.UserSettings + :members: + :show-inheritance: diff --git a/docs/source/yandex_music.rst b/docs/source/yandex_music.rst index b299884..2805572 100644 --- a/docs/source/yandex_music.rst +++ b/docs/source/yandex_music.rst @@ -8,7 +8,7 @@ yandex_music.utils yandex_music.genre yandex_music.track - yandex_music.status + yandex_music.account yandex_music.likes yandex_music.album yandex_music.search diff --git a/docs/source/yandex_music.status.rst b/docs/source/yandex_music.status.rst deleted file mode 100644 index a1886e4..0000000 --- a/docs/source/yandex_music.status.rst +++ /dev/null @@ -1,14 +0,0 @@ -Пакет yandex_music.status -========================= - -.. toctree:: - - yandex_music.status.status - yandex_music.status.account - yandex_music.status.passport_phone - yandex_music.status.plus - yandex_music.status.permissions - yandex_music.status.subscription - yandex_music.status.auto_renewable - yandex_music.status.product - yandex_music.status.price \ No newline at end of file diff --git a/yandex_music/account/account.py b/yandex_music/account/account.py index 5a272b2..d42dce2 100644 --- a/yandex_music/account/account.py +++ b/yandex_music/account/account.py @@ -7,7 +7,7 @@ from yandex_music import YandexMusicObject class Account(YandexMusicObject): - """Класс, предоставляющий основную информацию об аккаунте пользователя. + """Класс, представляющий основную информацию об аккаунте пользователя. Attributes: now (:obj:`str`): Текущая дата и время. diff --git a/yandex_music/account/permissions.py b/yandex_music/account/permissions.py index df6de23..97988a6 100644 --- a/yandex_music/account/permissions.py +++ b/yandex_music/account/permissions.py @@ -7,7 +7,7 @@ from yandex_music import YandexMusicObject class Permissions(YandexMusicObject): - """Класс, предоставляющий информацию о правах пользователя, их изначальных значениях и даты окончания. + """Класс, представляющий информацию о правах пользователя, их изначальных значениях и даты окончания. Attributes: until (:obj:`str`): Дата окончания прав. diff --git a/yandex_music/account/status.py b/yandex_music/account/status.py index 0f5f244..4275584 100644 --- a/yandex_music/account/status.py +++ b/yandex_music/account/status.py @@ -10,16 +10,16 @@ class Status(YandexMusicObject): """Класс, представляющий подробную информацию об аккаунте пользователя. Attributes: - account (:obj:`yandex_music.Account`): Объект класса :class:`yandex_music.Account` предоставляющий основную + account (:obj:`yandex_music.Account`): Объект класса :class:`yandex_music.Account` представляющий основную информацию об аккаунте. - permissions (:obj:`yandex_music.Permissions`): Объект класса :class:`yandex_music.Permissions` предоставляющий + permissions (:obj:`yandex_music.Permissions`): Объект класса :class:`yandex_music.Permissions` представляющий информацию о правах пользователя. - subscription (:obj:`yandex_music.Subscription`): Объект класса :class:`yandex_music.Subscription` предоставляющий + subscription (:obj:`yandex_music.Subscription`): Объект класса :class:`yandex_music.Subscription` представляющий информацию о подписках cache_limit (:obj:`int`): Максимальное количество загруженных треков. subeditor (:obj:`bool`): Наличие статуса модератора проверки корректности информации. subeditor_level (:obj:`int`): Уровень статуса модератора. - plus (:obj:`yandex_music.Plus`): Объект класса :class:`yandex_music.Plus` предоставляющий информацию о Plus + plus (:obj:`yandex_music.Plus`): Объект класса :class:`yandex_music.Plus` представляющий информацию о Plus подписке. default_email (:obj:`str`): Основной e-mail адрес аккаунта. skips_per_hour (:obj:`int`): Количество переключение треков на радио в час. @@ -29,16 +29,16 @@ class Status(YandexMusicObject): Music. Args: - account (:obj:`yandex_music.Account`): Объект класса :class:`yandex_music.Account` предоставляющий основную + account (:obj:`yandex_music.Account`): Объект класса :class:`yandex_music.Account` представляющий основную информацию об аккаунте. - permissions (:obj:`yandex_music.Permissions`): Объект класса :class:`yandex_music.Permissions` предоставляющий + permissions (:obj:`yandex_music.Permissions`): Объект класса :class:`yandex_music.Permissions` представляющий информацию о правах пользователя. - subscription (:obj:`yandex_music.Subscription`): Объект класса :class:`yandex_music.Subscription` предоставляющий + subscription (:obj:`yandex_music.Subscription`): Объект класса :class:`yandex_music.Subscription` представляющий информацию о подписках cache_limit (:obj:`int`, optional): Максимальное количество загруженных треков. subeditor (:obj:`bool`, optional): Наличие статуса модератора проверки корректности информации. subeditor_level (:obj:`int`, optional): Уровень статуса модератора. - plus (:obj:`yandex_music.Plus`, optional): Объект класса :class:`yandex_music.Plus` предоставляющий информацию о + plus (:obj:`yandex_music.Plus`, optional): Объект класса :class:`yandex_music.Plus` представляющий информацию о Plus подписке. default_email (:obj:`str`, optional): Основной e-mail адрес аккаунта. skips_per_hour (:obj:`int`, optional): Количество переключение треков на радио в час. diff --git a/yandex_music/account/subscription.py b/yandex_music/account/subscription.py index 2089bc1..bead53b 100644 --- a/yandex_music/account/subscription.py +++ b/yandex_music/account/subscription.py @@ -7,7 +7,7 @@ from yandex_music import YandexMusicObject class Subscription(YandexMusicObject): - """Класс, предоставляющий информацию о подписках пользователя. + """Класс, представляющий информацию о подписках пользователя. Attributes: auto_renewable (:obj:`list` из :obj:`yandex_music.AutoRenewable`): Список объектов класса diff --git a/yandex_music/account/user_settings.py b/yandex_music/account/user_settings.py index 07947cd..81c1292 100644 --- a/yandex_music/account/user_settings.py +++ b/yandex_music/account/user_settings.py @@ -7,16 +7,55 @@ from yandex_music import YandexMusicObject class UserSettings(YandexMusicObject): - """Класс, предоставляющий настройки пользователя. + """Класс, представляющий настройки пользователя. - Доступные значения для поля `theme`: `white`, `black`. - Доступные значения для полей `user_music_visibility` и `user_social_visibility`: `private`, `public`. + Note: + Доступные значения для поля `theme`: `white`, `black`. + + Доступные значения для полей `user_music_visibility` и `user_social_visibility`: `private`, `public`. + + Notes: + `promos_disabled`, `ads_disabled`, `rbt_disabled` устарели и не работают. + + `last_fm_scrobbling_enabled`, `facebook_scrobbling_enabled` выглядят устаревшими. Attributes: + uid (:obj:`int`): Уникальный идентификатор пользователя. + last_fm_scrobbling_enabled (:obj:`bool`): Скробблинг lastfm. + shuffle_enabled (:obj:`bool`): Переключать треки в случайном порядке. + volume_percents (:obj:`int`): Громкость звука в процентах. + modified (:obj:`str`): Дата изменения настроек. + facebook_scrobbling_enabled (:obj:`bool`): Скробблинг facebook. + add_new_track_on_playlist_top (:obj:`bool`): Добавлять новые треки в начало плейлиста. + user_music_visibility (:obj:`str`): Публичный доступ к моей фонотеке. + user_social_visibility (:obj:`str`): Показывать соцсети на странице. + rbt_disabled (:obj:`bool`): TODO (неиспользуемая фича). + theme (:obj:`str`): Тема оформления. + promos_disabled (:obj:`bool`): Не показывать рекламируемый контент). + auto_play_radio (:obj:`bool`): Бесконечный поток музыки. + ads_disabled (:obj:`bool`): Не показывать рекламу. + disk_enabled (:obj:`bool`): TODO. + show_disk_tracks_in_library (:obj:`bool`): Показывать локальные треки в библиотеке. client (:obj:`yandex_music.Client`): Объект класса :class:`yandex_music.Client` представляющий клиент Yandex Music. Args: + uid (:obj:`int`): Уникальный идентификатор пользователя. + last_fm_scrobbling_enabled (:obj:`bool`): Скробблинг lastfm. + shuffle_enabled (:obj:`bool`): Переключать треки в случайном порядке. + volume_percents (:obj:`int`): Громкость звука в процентах. + modified (:obj:`str`): Дата изменения настроек. + facebook_scrobbling_enabled (:obj:`bool`): Скробблинг facebook. + add_new_track_on_playlist_top (:obj:`bool`): Добавлять новые треки в начало плейлиста. + user_music_visibility (:obj:`str`): Публичный доступ к моей фонотеке. + user_social_visibility (:obj:`str`): Показывать соцсети на странице. + rbt_disabled (:obj:`bool`): TODO (неиспользуемая фича). + theme (:obj:`str`): Тема оформления. + promos_disabled (:obj:`bool`): Не показывать рекламируемый контент). + auto_play_radio (:obj:`bool`): Бесконечный поток музыки. + ads_disabled (:obj:`bool`, optional): Не показывать рекламу. + disk_enabled (:obj:`bool`, optional): TODO. + show_disk_tracks_in_library (:obj:`bool`, optional): Показывать локальные треки в библиотеке. client (:obj:`yandex_music.Client`, optional): Объект класса :class:`yandex_music.Client` представляющий клиент Yandex Music. **kwargs: Произвольные ключевые аргументы полученные от API. diff --git a/yandex_music/artist/artist_albums.py b/yandex_music/artist/artist_albums.py index 6805614..1e24aba 100644 --- a/yandex_music/artist/artist_albums.py +++ b/yandex_music/artist/artist_albums.py @@ -7,7 +7,7 @@ from yandex_music import YandexMusicObject class ArtistAlbums(YandexMusicObject): - """Класс представляющий страницу списка альбомов артиста. + """Класс, представляющий страницу списка альбомов артиста. Attributes: albums (:obj:`list` из :obj:`yandex_music.Album`): Список альбомов артиста. diff --git a/yandex_music/artist/artist_tracks.py b/yandex_music/artist/artist_tracks.py index cee4966..ffac16a 100644 --- a/yandex_music/artist/artist_tracks.py +++ b/yandex_music/artist/artist_tracks.py @@ -7,7 +7,7 @@ from yandex_music import YandexMusicObject class ArtistTracks(YandexMusicObject): - """Класс представляющий страницу списка треков артиста. + """Класс, представляющий страницу списка треков артиста. Attributes: tracks (:obj:`list` из :obj:`yandex_music.Track`): Список треков артиста. diff --git a/yandex_music/client.py b/yandex_music/client.py index 9cc54f0..3d77b6d 100644 --- a/yandex_music/client.py +++ b/yandex_music/client.py @@ -1,7 +1,8 @@ import logging import functools + from datetime import datetime -from typing import Callable, Union, List, Optional +from typing import Callable, Union, List, Optional, Dict from yandex_music import YandexMusicObject, Status, Settings, PermissionAlerts, Experiments, Artist, Album, Playlist, \ TracksList, Track, AlbumsLikes, ArtistsLikes, PlaylistsLikes, Feed, PromoCodeStatus, DownloadInfo, Search, \ @@ -48,17 +49,18 @@ def log(method): class Client(YandexMusicObject): - """Класс представляющий клиент Yandex Music. + """Класс, представляющий клиент Yandex Music. - При `fetch_account_status = False` многие сокращения перестанут работать в связи с тем, что неоткуда будет взять - uid аккаунта для отправки запроса. Так же в большинстве методов придётся передавать uid явно. + Note: + При `fetch_account_status = False` многие сокращения перестанут работать в связи с тем, что неоткуда будет взять + uid аккаунта для отправки запроса. Так же в большинстве методов придётся передавать `uid` явно. Attributes: logger (:obj:`logging.Logger`): Объект логера. token (:obj:`str`): Уникальный ключ для аутентификации. base_url (:obj:`str`): Ссылка на API Yandex Music. oauth_url (:obj:`str`): Ссылка на OAuth Yandex Music. - me (:obj:`yandex_music.Status`): Объект класса :class:`yandex_music.Status` предоставляющего основную + me (:obj:`yandex_music.Status`): Объект класса :class:`yandex_music.Status` представляющего основную информацию об аккаунте. Args: @@ -137,7 +139,8 @@ class Client(YandexMusicObject): def from_token(cls, token: str, *args, **kwargs) -> 'Client': """Инициализция клиента по токену. - Ничем не отличается от Client(token). Так исторически сложилось. + Note: + Ничем не отличается от `Client(token)`. Так исторически сложилось. Args: token (:obj:`str`, optional): Уникальный ключ для аутентификации. @@ -226,7 +229,7 @@ class Client(YandexMusicObject): **kwargs (:obj:`dict`, optional): Произвольные аргументы (будут переданы в запрос). Returns: - :obj:`yandex_music.Status`: Объекта класса :class:`yandex_music.Status` предоставляющий информацию об + :obj:`yandex_music.Status`: Объекта класса :class:`yandex_music.Status` представляющий информацию об аккаунте если валиден, иначе :obj:`None`. Raises: @@ -249,8 +252,8 @@ class Client(YandexMusicObject): **kwargs (:obj:`dict`, optional): Произвольные аргументы (будут переданы в запрос). Returns: - :obj:`yandex_music.UserSettings`: Объекта класса :class:`yandex_music.UserSettings` предоставляющий - настройки пользователя, иначе :obj:`None`. + :obj:`yandex_music.UserSettings`: Объекта класса :class:`yandex_music.UserSettings` представляющий + настройки пользователя, иначе :obj:`None`. Raises: :class:`yandex_music.YandexMusicError` @@ -263,20 +266,25 @@ class Client(YandexMusicObject): return UserSettings.de_json(result, self) @log - def account_settings_set(self, param: str, value: Union[str, int, bool], timeout: Union[int, float] = None, + def account_settings_set(self, param: str = None, value: Union[str, int, bool] = None, + data: Dict[str, Union[str, int, bool]] = None, timeout: Union[int, float] = None, *args, **kwargs) -> Optional[Settings]: """Изменение настроек текущего пользователя. - Доступные названия параметров есть поля в классе :class:`yandex_music.UserSettings`, только в CamelCase. + Note: + Доступные названия параметров есть поля в классе :class:`yandex_music.UserSettings`, только в CamelCase. Args: + param (:obj:`str`): Название параметра для изменения. + value (:obj:`str` | :obj:`int` | :obj:`bool`): Значение параметра. + data (:obj:`dict`): Словарь параметров и значений для множественного изменения. timeout (:obj:`int` | :obj:`float`, optional): Если это значение указано, используется как время ожидания ответа от сервера вместо указанного при создании пула. **kwargs (:obj:`dict`, optional): Произвольные аргументы (будут переданы в запрос). Returns: - :obj:`yandex_music.UserSettings`: Объекта класса :class:`yandex_music.UserSettings` предоставляющий - настройки пользователя, иначе :obj:`None`. + :obj:`yandex_music.UserSettings`: Объекта класса :class:`yandex_music.UserSettings` представляющий + настройки пользователя, иначе :obj:`None`. Raises: :class:`yandex_music.YandexMusicError` @@ -284,7 +292,10 @@ class Client(YandexMusicObject): url = f'{self.base_url}/account/settings' - result = self._request.get(url, params={param: value}, timeout=timeout, *args, **kwargs) + if not data: + data = {param: value} + + result = self._request.post(url, data=data, timeout=timeout, *args, **kwargs) return UserSettings.de_json(result, self) @@ -298,7 +309,7 @@ class Client(YandexMusicObject): **kwargs (:obj:`dict`, optional): Произвольные аргументы (будут переданы в запрос). Returns: - :obj:`yandex_music.Settings`: Объекта класса :class:`yandex_music.Settings` предоставляющий информацию о + :obj:`yandex_music.Settings`: Объекта класса :class:`yandex_music.Settings` представляющий информацию о предлагаемых продуктах, иначе :obj:`None`. Raises: @@ -419,8 +430,9 @@ class Client(YandexMusicObject): *args, **kwargs) -> Optional[Landing]: """Получение лендинг-страницы содержащий блоки с новыми релизами, чартами, плейлистами с новинками и т.д. - Поддерживаемые типы блоков: personalplaylists, promotions, new-releases, new-playlists, mixes,c hart, artists, - albums, playlists, play_contexts. + Note: + Поддерживаемые типы блоков: `personalplaylists`, `promotions`, `new-releases`, `new-playlists`, `mixes`, + `chart`, `artists`, `albums`, `playlists`, `play_contexts`. Args: blocks (:obj:`str` | :obj:`list` из :obj:`str`): Блок или список блоков необходимых для выдачи. @@ -504,7 +516,7 @@ class Client(YandexMusicObject): Returns: :obj:`yandex_music.Supplement`: Объект класса `yandex_music.Supplement` представляющий дополнительную - информацию о треке. + информацию о треке. Raises: :class:`yandex_music.YandexMusicError` @@ -529,7 +541,7 @@ class Client(YandexMusicObject): Returns: :obj:`yandex_music.SimilarTracks`: Объект класса `yandex_music.SimilarTracks` представляющий список похожих - треков на другой трек. + треков на другой трек. Raises: :class:`yandex_music.YandexMusicError` @@ -704,16 +716,19 @@ class Client(YandexMusicObject): *args, **kwargs) -> Optional[Settings]: """Получение настроек пользователя. - Для получения настроек пользователя нужно быть авторизованным или владеть `user_id`. + Note: + Для получения настроек пользователя нужно быть авторизованным или владеть `user_id`. Args: + user_id (:obj:`str` | :obj:`int`, optional): Уникальный идентификатор пользователя чьи настройки хотим + получить. timeout (:obj:`int` | :obj:`float`, optional): Если это значение указано, используется как время ожидания ответа от сервера вместо указанного при создании пула. **kwargs (:obj:`dict`, optional): Произвольные аргументы (будут переданы в запрос). Returns: - :obj:`yandex_music.UserSettings`: Объекта класса :class:`yandex_music.UserSettings` предоставляющий - настройки пользователя, иначе :obj:`None`. + :obj:`yandex_music.UserSettings`: Объекта класса :class:`yandex_music.UserSettings` представляющий + настройки пользователя, иначе :obj:`None`. Raises: :class:`yandex_music.YandexMusicError` @@ -860,7 +875,8 @@ class Client(YandexMusicObject): timeout: Union[int, float] = None, *args, **kwargs) -> Optional[Playlist]: """Изменение видимости плейлиста. - Видимость (visibility) может быть задана только одним из двух значений: private, public. + Note: + Видимость (`visibility`) может быть задана только одним из двух значений: `private`, `public`. Args: kind (:obj:`str` | :obj:`int`): Уникальный идентификатор плейлиста. @@ -893,8 +909,10 @@ class Client(YandexMusicObject): *args, **kwargs) -> Optional[Playlist]: """Изменение плейлиста. - Для получения отличий есть вспомогательный класс :class:`from yandex_music.utils.difference.Difference`. - Так же существуют уже готовые методы-обёртки над операциями. + Note: + Для получения отличий есть вспомогательный класс :class:`yandex_music.utils.difference.Difference`. + + Так же существуют уже готовые методы-обёртки над операциями. Args: kind (:obj:`str` | :obj:`int`): Уникальный идентификатор плейлиста. @@ -934,7 +952,8 @@ class Client(YandexMusicObject): timeout: Union[int, float] = None, *args, **kwargs) -> Optional[Playlist]: """Добавление трека в плейлист. - Трек можно вставить с любое место плейлиста задав индекс вставки (аргумент at). + Note: + Трек можно вставить с любое место плейлиста задав индекс вставки (аргумент `at`). Args: kind (:obj:`str` | :obj:`int`): Уникальный идентификатор плейлиста. @@ -968,7 +987,8 @@ class Client(YandexMusicObject): *args, **kwargs) -> Optional[Playlist]: """Удаление треков из плейлиста. - Для удаление необходимо указать границы с какого по какой элемент (трек) удалить. + Note: + Для удаление необходимо указать границы с какого по какой элемент (трек) удалить. Args: kind (:obj:`str` | :obj:`int`): Уникальный идентификатор плейлиста. @@ -999,7 +1019,8 @@ class Client(YandexMusicObject): def rotor_account_status(self, timeout: Union[int, float] = None, *args, **kwargs) -> Optional[Status]: """Получение статуса пользователя с дополнителньыми полями. - Данный статус отличается от обычного наличием дополнительных полей, например, `skips_per_hour`. + Note: + Данный статус отличается от обычного наличием дополнительных полей, например, `skips_per_hour`. Args: timeout (:obj:`int` | :obj:`float`, optional): Если это значение указано, используется как время ожидания @@ -1049,7 +1070,9 @@ class Client(YandexMusicObject): *args, **kwargs) -> List[StationResult]: """Получение всех радиостанций с настройками пользователя. - Чтобы определить что за тип станции (жанры, настроения, занятие и т.д.) необходимо смотреть в пол `id_for_from`. + Note: + Чтобы определить что за тип станции (жанры, настроения, занятие и т.д.) необходимо смотреть в поле + `id_for_from`. Args: language (:obj:`str`): Язык, на котором будет информация о станциях. @@ -1078,11 +1101,14 @@ class Client(YandexMusicObject): *args, **kwargs) -> bool: """Отправка ответной реакции на происходящее при прослушивании радио. - Сообщения о начале прослушивания радио, начале и конце трека, его пропуска. + Note: + Сообщения о начале прослушивания радио, начале и конце трека, его пропуска. - Известные типы фидбека: `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`): Станция. @@ -1138,6 +1164,12 @@ class Client(YandexMusicObject): """Сокращение для:: client.rotor_station_feedback(station, 'radioStarted', timestamp, from, *args, **kwargs) + + Returns: + :obj:`bool`: :obj:`True` при успешном выполнении запроса, иначе :obj:`False`. + + Raises: + :class:`yandex_music.YandexMusicError` """ return self.rotor_station_feedback(station, 'radioStarted', timestamp, from_=from_, batch_id=batch_id, timeout=timeout, *args, **kwargs) @@ -1149,6 +1181,12 @@ class Client(YandexMusicObject): """Сокращение для:: client.rotor_station_feedback(station, 'trackStarted', timestamp, track_id, *args, **kwargs) + + Returns: + :obj:`bool`: :obj:`True` при успешном выполнении запроса, иначе :obj:`False`. + + Raises: + :class:`yandex_music.YandexMusicError` """ return self.rotor_station_feedback(station, 'trackStarted', timestamp, track_id=track_id, batch_id=batch_id, timeout=timeout, *args, **kwargs) @@ -1161,7 +1199,13 @@ class Client(YandexMusicObject): """Сокращение для:: client.rotor_station_feedback(station, 'trackFinished', timestamp, track_id, total_played_seconds, - *args, **kwargs) + *args, **kwargs) + + Returns: + :obj:`bool`: :obj:`True` при успешном выполнении запроса, иначе :obj:`False`. + + Raises: + :class:`yandex_music.YandexMusicError` """ return self.rotor_station_feedback(station, 'trackFinished', timestamp, track_id=track_id, total_played_seconds=total_played_seconds, batch_id=batch_id, @@ -1175,7 +1219,13 @@ class Client(YandexMusicObject): """Сокращение для:: client.rotor_station_feedback(station, 'skip', timestamp, track_id, total_played_seconds, - *args, **kwargs) + *args, **kwargs) + + Returns: + :obj:`bool`: :obj:`True` при успешном выполнении запроса, иначе :obj:`False`. + + Raises: + :class:`yandex_music.YandexMusicError` """ return self.rotor_station_feedback(station, 'skip', timestamp, track_id=track_id, total_played_seconds=total_played_seconds, batch_id=batch_id, @@ -1211,13 +1261,14 @@ class Client(YandexMusicObject): timeout: Union[int, float] = None, *args, **kwargs) -> bool: """Изменение настроек определённой станции. - Доступные значения для `mood_energy`: `fun`, `active`, `calm`, `sad`, `all`. - Доступные значения для `diversity`: `favorite`, `popular`, `discover`, `default`. - Доступные значения для `language`: `not-russian`, `russian`, `any`. + Note: + Доступные значения для `mood_energy`: `fun`, `active`, `calm`, `sad`, `all`. - У станций в `restrictions` есть Enum'ы, а в них `possible_values` - доступные значения для поля. + Доступные значения для `diversity`: `favorite`, `popular`, `discover`, `default`. - Не некоторых аккаунтах не меняется язык... + Доступные значения для `language`: `not-russian`, `russian`, `any`. + + У станций в `restrictions` есть Enum'ы, а в них `possible_values` - доступные значения для поля. Args: station (:obj:`str`): Станция. @@ -1254,15 +1305,17 @@ class Client(YandexMusicObject): timeout: Union[int, float] = None, *args, **kwargs) -> Optional[StationTracksResult]: """Получение цепочки треков определённой станции. - Для продолжения цепочки треков необходимо: - 1. Передавать ID трека, что был до этого (первый в цепочки). - 2. Отправить фидбек о конче или скипе трека, что был передан в `queue`. - 3. Отправить фидбек о начале следующего трека (второй в цепочки). - 4. Выполнить запрос получения треков. В ответе придёт новые треки или произойдёт сдвиг цепочки на 1 элемент. + Note: + Для продолжения цепочки треков необходимо: - Проход по цепочке до коцна не изучен. Часто встречаются дубликаты. + 1. Передавать `ID` трека, что был до этого (первый в цепочки). + 2. Отправить фидбек о конче или скипе трека, что был передан в `queue`. + 3. Отправить фидбек о начале следующего трека (второй в цепочки). + 4. Выполнить запрос получения треков. В ответе придёт новые треки или произойдёт сдвиг цепочки на 1 элемент. - Все официальные клиенты выполняют запросы с `settings2 = True`. + Проход по цепочке до коцна не изучен. Часто встречаются дубликаты. + + Все официальные клиенты выполняют запросы с `settings2 = True`. Args: station (:obj:`str`): Станция. @@ -1340,7 +1393,8 @@ class Client(YandexMusicObject): *args, **kwargs) -> Optional[ArtistAlbums]: """Получение альбомов артиста. - Известные значения для sort_by: year, rating. + Note: + Известные значения для `sort_by`: `year`, `rating`. Args: artist_id (:obj:`str` | :obj:`int`): Уникальный идентификатор артиста. @@ -1555,15 +1609,17 @@ class Client(YandexMusicObject): timeout: Union[int, float] = None, *args, **kwargs) -> Optional[ShotEvent]: """Получение рекламы или шота от Алисы после трека. - При получения шота от Алисы `prev_track_id` можно не указывать. + Note: + При получения шота от Алисы `prev_track_id` можно не указывать. - Если `context = 'playlist'`, то в `context_item` необходимо передать `{OWNER_PLAYLIST}:{ID_PLAYLIST}`. - Плейлист с Алисой имеет владельца с `id = 940441070`. + Если `context = 'playlist'`, то в `context_item` необходимо передать `{OWNER_PLAYLIST}:{ID_PLAYLIST}`. + Плейлист с Алисой имеет владельца с `id = 940441070`. - ID плейлиста можно получить из блоков landing'a. Получить шот чужого плейлиста нельзя. + ID плейлиста можно получить из блоков landing'a. Получить шот чужого плейлиста нельзя. - Известные значения `context`: `playlist`. - Известные значения `types`: `shot`, `ad`. + Известные значения `context`: `playlist`. + + Известные значения `types`: `shot`, `ad`. Args: prev_track_id (:obj:`str` | :obj:`int`): Уникальный идентификатор предыдущего трека. @@ -1578,7 +1634,7 @@ class Client(YandexMusicObject): Returns: :obj:`yandex_music.ShotEvent`: Объекта класса :class:`yandex_music.ShotEvent` - представляющий шоты от Алисы, иначе :obj:`None`. + представляющий шоты от Алисы, иначе :obj:`None`. Raises: :class:`yandex_music.YandexMusicError` diff --git a/yandex_music/cover.py b/yandex_music/cover.py index 9ddee4c..c40d307 100644 --- a/yandex_music/cover.py +++ b/yandex_music/cover.py @@ -7,7 +7,7 @@ from yandex_music import YandexMusicObject class Cover(YandexMusicObject): - """Класс представляющий обложку. + """Класс, представляющий обложку. Attributes: type (:obj:`str`): Тип обложки. diff --git a/yandex_music/download_info.py b/yandex_music/download_info.py index 6f4d352..b7faf2c 100644 --- a/yandex_music/download_info.py +++ b/yandex_music/download_info.py @@ -11,7 +11,7 @@ from yandex_music import YandexMusicObject class DownloadInfo(YandexMusicObject): - """Класс представляющий информацию о вариантах загрузки трека. + """Класс, представляющий информацию о вариантах загрузки трека. Attributes: codec (:obj:`str`): Кодек аудиофайла. diff --git a/yandex_music/icon.py b/yandex_music/icon.py index 37c6134..319975d 100644 --- a/yandex_music/icon.py +++ b/yandex_music/icon.py @@ -7,7 +7,7 @@ from yandex_music import YandexMusicObject class Icon(YandexMusicObject): - """Класс представляющий иконку. + """Класс, представляющий иконку. Attributes: background_color (:obj:`str`): Цвет заднего фона в HEX. diff --git a/yandex_music/invocation_info.py b/yandex_music/invocation_info.py index c00842c..deb4ec6 100644 --- a/yandex_music/invocation_info.py +++ b/yandex_music/invocation_info.py @@ -7,7 +7,7 @@ from yandex_music import YandexMusicObject class InvocationInfo(YandexMusicObject): - """Класс представляющий информацию о запросе. + """Класс, представляющий информацию о запросе. Attributes: hostname (:obj:`str`): Имя удалённого сервера. diff --git a/yandex_music/pager.py b/yandex_music/pager.py index 5e24cd7..8154bef 100644 --- a/yandex_music/pager.py +++ b/yandex_music/pager.py @@ -7,7 +7,7 @@ from yandex_music import YandexMusicObject class Pager(YandexMusicObject): - """Класс представляющий пагинатор. + """Класс, представляющий пагинатор. Attributes: total (:obj:`int`): Всего треков. diff --git a/yandex_music/permission_alerts.py b/yandex_music/permission_alerts.py index 7b1135b..38b1bd9 100644 --- a/yandex_music/permission_alerts.py +++ b/yandex_music/permission_alerts.py @@ -7,7 +7,7 @@ from yandex_music import YandexMusicObject class PermissionAlerts(YandexMusicObject): - """Класс представляющий оповещения. + """Класс, представляющий оповещения. Attributes: alerts (:obj:`list` из :obj:`str`): Список оповещений. diff --git a/yandex_music/playlist/playlist_absence.py b/yandex_music/playlist/playlist_absence.py index 3290cbb..5b71b8c 100644 --- a/yandex_music/playlist/playlist_absence.py +++ b/yandex_music/playlist/playlist_absence.py @@ -7,7 +7,7 @@ from yandex_music import YandexMusicObject class PlaylistAbsence(YandexMusicObject): - """Класс представляющий причину отсутствия плейлиста. + """Класс, представляющий причину отсутствия плейлиста. Attributes: kind (:obj:`int`): Уникальный идентификатор плейлиста. diff --git a/yandex_music/playlist/user.py b/yandex_music/playlist/user.py index 14ac693..8ab3fdf 100644 --- a/yandex_music/playlist/user.py +++ b/yandex_music/playlist/user.py @@ -7,7 +7,7 @@ from yandex_music import YandexMusicObject class User(YandexMusicObject): - """Класс представляющий пользователя. + """Класс, представляющий пользователя. Attributes: uid (:obj:`int`): Идентификатор пользователя. diff --git a/yandex_music/promo_code_status.py b/yandex_music/promo_code_status.py index 45222f6..de2bb07 100644 --- a/yandex_music/promo_code_status.py +++ b/yandex_music/promo_code_status.py @@ -7,7 +7,7 @@ from yandex_music import YandexMusicObject class PromoCodeStatus(YandexMusicObject): - """Класс представляющий статус активации промо-кода. + """Класс, представляющий статус активации промо-кода. Attributes: status (:obj:`str`): Статус операции. diff --git a/yandex_music/search/search.py b/yandex_music/search/search.py index 6c3e47b..4ac089b 100644 --- a/yandex_music/search/search.py +++ b/yandex_music/search/search.py @@ -7,7 +7,7 @@ from yandex_music import YandexMusicObject class Search(YandexMusicObject): - """Класс представляющий результаты поиска. + """Класс, представляющий результаты поиска. Attributes: search_request_id (:obj:`str`): ID запроса. diff --git a/yandex_music/track_short.py b/yandex_music/track_short.py index 8cccee3..747c222 100644 --- a/yandex_music/track_short.py +++ b/yandex_music/track_short.py @@ -7,7 +7,7 @@ from yandex_music import YandexMusicObject class TrackShort(YandexMusicObject): - """Класс представляющий укороченную версию трека с неполными данными. + """Класс, представляющий укороченную версию трека с неполными данными. Attributes: id (:obj:`str`): Уникальный идентификатор трека. diff --git a/yandex_music/tracks_list.py b/yandex_music/tracks_list.py index 668c1b3..e56eb77 100644 --- a/yandex_music/tracks_list.py +++ b/yandex_music/tracks_list.py @@ -7,7 +7,7 @@ from yandex_music import YandexMusicObject class TracksList(YandexMusicObject): - """Класс представляющий список треков. + """Класс, представляющий список треков. Attributes: uid (:obj:`int`): Уникальный идентификатор пользователя. diff --git a/yandex_music/utils/captcha_response.py b/yandex_music/utils/captcha_response.py index 023c52a..8a1d70a 100644 --- a/yandex_music/utils/captcha_response.py +++ b/yandex_music/utils/captcha_response.py @@ -7,7 +7,7 @@ from yandex_music import YandexMusicObject class CaptchaResponse(YandexMusicObject): - """Класс представляющий ответ сервера с запросом на ввод капчи. + """Класс, представляющий ответ сервера с запросом на ввод капчи. Attributes: x_captcha_url (:obj:`str`): Ссылка на изображение с капчей. diff --git a/yandex_music/utils/request.py b/yandex_music/utils/request.py index 2934db7..0462df8 100644 --- a/yandex_music/utils/request.py +++ b/yandex_music/utils/request.py @@ -26,7 +26,7 @@ logging.getLogger('urllib3').setLevel(logging.WARNING) class Request: - """Вспомогателньный класс для yandex_music предоставляющий методы для выполнения POST и GET запросов, скачивания + """Вспомогателньный класс для yandex_music представляющий методы для выполнения POST и GET запросов, скачивания файлов. Args: