From 5afeaa244bbbfa275ee7812fabd7078390401705 Mon Sep 17 00:00:00 2001 From: Il`ya Date: Sat, 25 Jan 2020 21:09:03 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=20UserSettings.=20?= =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=20=D0=BC=D0=B5?= =?UTF-8?q?=D1=82=D0=BE=D0=B4=20=D0=B4=D0=BB=D1=8F=20=D0=BF=D0=BE=D0=BB?= =?UTF-8?q?=D1=83=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=81=D0=B2=D0=BE=D0=B8?= =?UTF-8?q?=D1=85=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B5=D0=BA.=20?= =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=20=D0=BC=D0=B5?= =?UTF-8?q?=D1=82=D0=BE=D0=B4=20=D0=B4=D0=BB=D1=8F=20=D0=BF=D0=BE=D0=BB?= =?UTF-8?q?=D1=83=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BD=D0=B0=D1=81=D1=82?= =?UTF-8?q?=D1=80=D0=BE=D0=B5=D0=BA=20=D0=B4=D1=80=D1=83=D0=B3=D0=BE=D0=B3?= =?UTF-8?q?=D0=BE=20=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82?= =?UTF-8?q?=D0=B5=D0=BB=D1=8F.=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B5=D0=BA.=20=D0=98?= =?UTF-8?q?=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=BE=20=D0=BD=D0=B0=D0=B7?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=B0=D0=BA=D0=B5=D1=82?= =?UTF-8?q?=D0=B0=20=D1=81=20status=20=D0=BD=D0=B0=20account.=20#195?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yandex_music/__init__.py | 21 ++-- yandex_music/{status => account}/__init__.py | 0 yandex_music/{status => account}/account.py | 2 +- .../{status => account}/auto_renewable.py | 2 +- .../{status => account}/passport_phone.py | 2 +- .../{status => account}/permissions.py | 2 +- yandex_music/{status => account}/plus.py | 2 +- yandex_music/{status => account}/price.py | 2 +- yandex_music/{status => account}/product.py | 2 +- yandex_music/{status => account}/status.py | 2 +- .../{status => account}/subscription.py | 2 +- yandex_music/account/user_settings.py | 82 +++++++++++++ yandex_music/client.py | 115 +++++++++++++++--- yandex_music/settings.py | 2 +- 14 files changed, 200 insertions(+), 38 deletions(-) rename yandex_music/{status => account}/__init__.py (100%) rename yandex_music/{status => account}/account.py (97%) rename yandex_music/{status => account}/auto_renewable.py (97%) rename yandex_music/{status => account}/passport_phone.py (96%) rename yandex_music/{status => account}/permissions.py (92%) rename yandex_music/{status => account}/plus.py (96%) rename yandex_music/{status => account}/price.py (97%) rename yandex_music/{status => account}/product.py (98%) rename yandex_music/{status => account}/status.py (97%) rename yandex_music/{status => account}/subscription.py (96%) create mode 100644 yandex_music/account/user_settings.py diff --git a/yandex_music/__init__.py b/yandex_music/__init__.py index 8e8b1c9..1495b1a 100644 --- a/yandex_music/__init__.py +++ b/yandex_music/__init__.py @@ -4,15 +4,16 @@ from .settings import Settings from .permission_alerts import PermissionAlerts from .experiments import Experiments -from .status.status import Status -from .status.account import Account -from .status.plus import Plus -from .status.subscription import Subscription -from .status.price import Price -from .status.product import Product -from .status.auto_renewable import AutoRenewable -from .status.passport_phone import PassportPhone -from .status.permissions import Permissions +from .account.status import Status +from .account.account import Account +from .account.plus import Plus +from .account.user_settings import UserSettings +from .account.subscription import Subscription +from .account.price import Price +from .account.product import Product +from .account.auto_renewable import AutoRenewable +from .account.passport_phone import PassportPhone +from .account.permissions import Permissions from .album.album import Album from .album.label import Label @@ -120,4 +121,4 @@ __all__ = ['YandexMusicObject', 'Client', 'Account', 'PassportPhone', 'Invocatio 'Icon', 'Images', 'Id', 'Station', 'Dashboard', 'RotorSettings', 'AdParams', 'Restrictions', 'Value', 'Enum', 'DiscreteScale', 'StationResult', 'Sequence', 'StationTracksResult', 'BriefInfo', 'Description', 'PlaylistId', 'Vinyl', 'Supplement', 'Lyrics', 'VideoSupplement', 'ArtistTracks', 'Pager', 'ArtistAlbums', - 'PlaylistAbsence', 'Shot', 'ShotEvent', 'ShotType', 'ShotData', 'SimilarTracks'] + 'PlaylistAbsence', 'Shot', 'ShotEvent', 'ShotType', 'ShotData', 'SimilarTracks', 'UserSettings'] diff --git a/yandex_music/status/__init__.py b/yandex_music/account/__init__.py similarity index 100% rename from yandex_music/status/__init__.py rename to yandex_music/account/__init__.py diff --git a/yandex_music/status/account.py b/yandex_music/account/account.py similarity index 97% rename from yandex_music/status/account.py rename to yandex_music/account/account.py index dc99a0e..5a272b2 100644 --- a/yandex_music/status/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/status/auto_renewable.py b/yandex_music/account/auto_renewable.py similarity index 97% rename from yandex_music/status/auto_renewable.py rename to yandex_music/account/auto_renewable.py index 2c02460..3a1baa6 100644 --- a/yandex_music/status/auto_renewable.py +++ b/yandex_music/account/auto_renewable.py @@ -7,7 +7,7 @@ from yandex_music import YandexMusicObject class AutoRenewable(YandexMusicObject): - """Класс представляющий автопродление подписки. + """Класс, представляющий автопродление подписки. Attributes: expires (:obj:`str`): Дата истечения подписки. diff --git a/yandex_music/status/passport_phone.py b/yandex_music/account/passport_phone.py similarity index 96% rename from yandex_music/status/passport_phone.py rename to yandex_music/account/passport_phone.py index 220584c..082d746 100644 --- a/yandex_music/status/passport_phone.py +++ b/yandex_music/account/passport_phone.py @@ -7,7 +7,7 @@ from yandex_music import YandexMusicObject class PassportPhone(YandexMusicObject): - """Класс представляющий номер телефона пользователя. + """Класс, представляющий номер телефона пользователя. Attributes: phone (:obj:`str`): Номер телефона. diff --git a/yandex_music/status/permissions.py b/yandex_music/account/permissions.py similarity index 92% rename from yandex_music/status/permissions.py rename to yandex_music/account/permissions.py index 027084d..df6de23 100644 --- a/yandex_music/status/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/status/plus.py b/yandex_music/account/plus.py similarity index 96% rename from yandex_music/status/plus.py rename to yandex_music/account/plus.py index b697f1e..b432c29 100644 --- a/yandex_music/status/plus.py +++ b/yandex_music/account/plus.py @@ -7,7 +7,7 @@ from yandex_music import YandexMusicObject class Plus(YandexMusicObject): - """Класс представляющий Plus подписку. + """Класс, представляющий Plus подписку. Attributes: has_plus (:obj:`bool`): Наличие. diff --git a/yandex_music/status/price.py b/yandex_music/account/price.py similarity index 97% rename from yandex_music/status/price.py rename to yandex_music/account/price.py index 296af15..c7f0851 100644 --- a/yandex_music/status/price.py +++ b/yandex_music/account/price.py @@ -7,7 +7,7 @@ from yandex_music import YandexMusicObject class Price(YandexMusicObject): - """Класс представляющий цену. + """Класс, представляющий цену. Attributes: amount (:obj:`int`): Количество единиц. diff --git a/yandex_music/status/product.py b/yandex_music/account/product.py similarity index 98% rename from yandex_music/status/product.py rename to yandex_music/account/product.py index c1c8fe8..3540159 100644 --- a/yandex_music/status/product.py +++ b/yandex_music/account/product.py @@ -7,7 +7,7 @@ from yandex_music import YandexMusicObject class Product(YandexMusicObject): - """Класс представляющий продаваемый продукт. + """Класс, представляющий продаваемый продукт. Attributes: product_id (:obj:`str`): Уникальный идентификатор. diff --git a/yandex_music/status/status.py b/yandex_music/account/status.py similarity index 97% rename from yandex_music/status/status.py rename to yandex_music/account/status.py index 43e8e77..0f5f244 100644 --- a/yandex_music/status/status.py +++ b/yandex_music/account/status.py @@ -7,7 +7,7 @@ from yandex_music import YandexMusicObject class Status(YandexMusicObject): - """Класс представляющий подробную информацию об аккаунте пользователя. + """Класс, представляющий подробную информацию об аккаунте пользователя. Attributes: account (:obj:`yandex_music.Account`): Объект класса :class:`yandex_music.Account` предоставляющий основную diff --git a/yandex_music/status/subscription.py b/yandex_music/account/subscription.py similarity index 96% rename from yandex_music/status/subscription.py rename to yandex_music/account/subscription.py index 0e47413..2089bc1 100644 --- a/yandex_music/status/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 new file mode 100644 index 0000000..07947cd --- /dev/null +++ b/yandex_music/account/user_settings.py @@ -0,0 +1,82 @@ +from typing import TYPE_CHECKING, Optional + +if TYPE_CHECKING: + from yandex_music import Client + +from yandex_music import YandexMusicObject + + +class UserSettings(YandexMusicObject): + """Класс, предоставляющий настройки пользователя. + + Доступные значения для поля `theme`: `white`, `black`. + Доступные значения для полей `user_music_visibility` и `user_social_visibility`: `private`, `public`. + + Attributes: + client (:obj:`yandex_music.Client`): Объект класса :class:`yandex_music.Client` представляющий клиент Yandex + Music. + + Args: + client (:obj:`yandex_music.Client`, optional): Объект класса :class:`yandex_music.Client` представляющий клиент + Yandex Music. + **kwargs: Произвольные ключевые аргументы полученные от API. + """ + + def __init__(self, + uid: int, + last_fm_scrobbling_enabled: bool, + shuffle_enabled: bool, + volume_percents: int, + modified: str, + facebook_scrobbling_enabled: bool, + add_new_track_on_playlist_top: bool, + user_music_visibility: str, + user_social_visibility: str, + rbt_disabled: bool, + theme: str, + promos_disabled: bool, + auto_play_radio: bool, + ads_disabled: Optional[bool] = None, + disk_enabled: Optional[bool] = None, + show_disk_tracks_in_library: Optional[bool] = None, + client: Optional['Client'] = None, + **kwargs) -> None: + self.uid = uid + self.last_fm_scrobbling_enabled = last_fm_scrobbling_enabled + self.shuffle_enabled = shuffle_enabled + self.volume_percents = volume_percents + self.modified = modified + self.facebook_scrobbling_enabled = facebook_scrobbling_enabled + self.add_new_track_on_playlist_top = add_new_track_on_playlist_top + self.user_music_visibility = user_music_visibility + self.user_social_visibility = user_social_visibility + self.rbt_disabled = rbt_disabled + self.theme = theme + self.promos_disabled = promos_disabled + self.auto_play_radio = auto_play_radio + + self.ads_disabled = ads_disabled + self.disk_enabled = disk_enabled + self.show_disk_tracks_in_library = show_disk_tracks_in_library + + self.client = client + self._id_attrs = (self.uid, ) + + @classmethod + def de_json(cls, data: dict, client: 'Client') -> Optional['UserSettings']: + """Десериализация объекта. + + Args: + data (:obj:`dict`): Поля и значения десериализуемого объекта. + client (:obj:`yandex_music.Client`): Объект класса :class:`yandex_music.Client` представляющий клиент Yandex + Music. + + Returns: + :obj:`yandex_music.UserSettings`: Объект класса :class:`yandex_music.UserSettings`. + """ + if not data: + return None + + data = super(UserSettings, cls).de_json(data, client) + + return cls(client=client, **data) diff --git a/yandex_music/client.py b/yandex_music/client.py index 826d93d..9cc54f0 100644 --- a/yandex_music/client.py +++ b/yandex_music/client.py @@ -6,7 +6,7 @@ from typing import Callable, Union, List, Optional from yandex_music import YandexMusicObject, Status, Settings, PermissionAlerts, Experiments, Artist, Album, Playlist, \ TracksList, Track, AlbumsLikes, ArtistsLikes, PlaylistsLikes, Feed, PromoCodeStatus, DownloadInfo, Search, \ Suggestions, Landing, Genre, Dashboard, StationResult, StationTracksResult, BriefInfo, Supplement, ArtistTracks, \ - ArtistAlbums, ShotEvent, SimilarTracks + ArtistAlbums, ShotEvent, SimilarTracks, UserSettings from yandex_music.utils.request import Request from yandex_music.utils.difference import Difference from yandex_music.exceptions import InvalidToken, Captcha @@ -239,6 +239,55 @@ class Client(YandexMusicObject): return Status.de_json(result, self) + @log + def account_settings(self, timeout: Union[int, float] = None, *args, **kwargs) -> Optional[Settings]: + """Получение настроек текущего пользователя. + + Args: + timeout (:obj:`int` | :obj:`float`, optional): Если это значение указано, используется как время ожидания + ответа от сервера вместо указанного при создании пула. + **kwargs (:obj:`dict`, optional): Произвольные аргументы (будут переданы в запрос). + + Returns: + :obj:`yandex_music.UserSettings`: Объекта класса :class:`yandex_music.UserSettings` предоставляющий + настройки пользователя, иначе :obj:`None`. + + Raises: + :class:`yandex_music.YandexMusicError` + """ + + url = f'{self.base_url}/account/settings' + + result = self._request.get(url, timeout=timeout, *args, **kwargs) + + return UserSettings.de_json(result, self) + + @log + def account_settings_set(self, param: str, value: Union[str, int, bool], timeout: Union[int, float] = None, + *args, **kwargs) -> Optional[Settings]: + """Изменение настроек текущего пользователя. + + Доступные названия параметров есть поля в классе :class:`yandex_music.UserSettings`, только в CamelCase. + + Args: + timeout (:obj:`int` | :obj:`float`, optional): Если это значение указано, используется как время ожидания + ответа от сервера вместо указанного при создании пула. + **kwargs (:obj:`dict`, optional): Произвольные аргументы (будут переданы в запрос). + + Returns: + :obj:`yandex_music.UserSettings`: Объекта класса :class:`yandex_music.UserSettings` предоставляющий + настройки пользователя, иначе :obj:`None`. + + Raises: + :class:`yandex_music.YandexMusicError` + """ + + url = f'{self.base_url}/account/settings' + + result = self._request.get(url, params={param: value}, timeout=timeout, *args, **kwargs) + + return UserSettings.de_json(result, self) + @log def settings(self, timeout: Union[int, float] = None, *args, **kwargs) -> Optional[Settings]: """Получение предложений по покупке. Нет обязательных параметров. @@ -651,14 +700,43 @@ class Client(YandexMusicObject): return Suggestions.de_json(result, self) @log - def users_playlists(self, kind: Union[List[Union[str, int]], str, int], user_id: str = None, + def users_settings(self, user_id: Union[str, int] = None, timeout: Union[int, float] = None, + *args, **kwargs) -> Optional[Settings]: + """Получение настроек пользователя. + + Для получения настроек пользователя нужно быть авторизованным или владеть `user_id`. + + Args: + timeout (:obj:`int` | :obj:`float`, optional): Если это значение указано, используется как время ожидания + ответа от сервера вместо указанного при создании пула. + **kwargs (:obj:`dict`, optional): Произвольные аргументы (будут переданы в запрос). + + Returns: + :obj:`yandex_music.UserSettings`: Объекта класса :class:`yandex_music.UserSettings` предоставляющий + настройки пользователя, иначе :obj:`None`. + + Raises: + :class:`yandex_music.YandexMusicError` + """ + + if user_id is None and self.me is not None: + user_id = self.me.account.uid + + url = f'{self.base_url}/users/{user_id}/settings' + + result = self._request.get(url, timeout=timeout, *args, **kwargs) + + return UserSettings.de_json(result.get('user_settings'), self) + + @log + def users_playlists(self, kind: Union[List[Union[str, int]], str, int], user_id: Union[str, int] = None, timeout: Union[int, float] = None, *args, **kwargs) -> List[Playlist]: """Получение плейлиста или списка плейлистов по уникальным идентификаторам. Args: kind (:obj:`str` | :obj:`int` | :obj:`list` из :obj:`str` | :obj:`int`): Уникальный идентификатор плейлиста или их список. - user_id: (:obj:`int`, optional): Уникальный идентификатор пользователя владеющим плейлистом. + user_id (:obj:`str` | :obj:`int`, optional): Уникальный идентификатор пользователя владеющим плейлистом. timeout (:obj:`int` | :obj:`float`, optional): Если это значение указано, используется как время ожидания ответа от сервера вместо указанного при создании пула. **kwargs (:obj:`dict`, optional): Произвольные аргументы (будут переданы в запрос). @@ -685,14 +763,14 @@ class Client(YandexMusicObject): return Playlist.de_list(result, self) @log - def users_playlists_create(self, title: str, visibility: str = 'public', user_id: str = None, + def users_playlists_create(self, title: str, visibility: str = 'public', user_id: Union[str, int] = None, timeout: Union[int, float] = None, *args, **kwargs) -> Optional[Playlist]: """Создание плейлиста. Args: title (:obj:`str`): Название. visibility (:obj:`str`, optional): Модификатор доступа. - user_id: (:obj:`int`, optional): Уникальный идентификатор пользователя владеющим плейлистом. + user_id (:obj:`str` | :obj:`int`, optional): Уникальный идентификатор пользователя владеющим плейлистом. timeout (:obj:`int` | :obj:`float`, optional): Если это значение указано, используется как время ожидания ответа от сервера вместо указанного при создании пула. **kwargs (:obj:`dict`, optional): Произвольные аргументы (будут переданы в запрос). @@ -720,13 +798,13 @@ class Client(YandexMusicObject): return Playlist.de_json(result, self) @log - def users_playlists_delete(self, kind: Union[str, int], user_id: str = None, + def users_playlists_delete(self, kind: Union[str, int], user_id: Union[str, int] = None, timeout: Union[int, float] = None, *args, **kwargs) -> bool: """Удаление плейлиста. Args: kind (:obj:`str` | :obj:`int`): Уникальный идентификатор плейлиста. - user_id: (:obj:`int`, optional): Уникальный идентификатор пользователя владеющим плейлистом. + user_id (:obj:`str` | :obj:`int`, optional): Уникальный идентификатор пользователя владеющим плейлистом. timeout (:obj:`int` | :obj:`float`, optional): Если это значение указано, используется как время ожидания ответа от сервера вместо указанного при создании пула. **kwargs (:obj:`dict`, optional): Произвольные аргументы (будут переданы в запрос). @@ -748,14 +826,14 @@ class Client(YandexMusicObject): return result == 'ok' @log - def users_playlists_name(self, kind: Union[str, int], name: str, user_id: str = None, + def users_playlists_name(self, kind: Union[str, int], name: str, user_id: Union[str, int] = None, timeout: Union[int, float] = None, *args, **kwargs) -> Optional[Playlist]: """Изменение названия плейлиста. Args: kind (:obj:`str` | :obj:`int`): Уникальный идентификатор плейлиста. name (:obj:`str`): Новое название. - user_id: (:obj:`int`, optional): Уникальный идентификатор пользователя владеющим плейлистом. + user_id (:obj:`str` | :obj:`int`, optional): Уникальный идентификатор пользователя владеющим плейлистом. timeout (:obj:`int` | :obj:`float`, optional): Если это значение указано, используется как время ожидания ответа от сервера вместо указанного при создании пула. **kwargs (:obj:`dict`, optional): Произвольные аргументы (будут переданы в запрос). @@ -778,7 +856,7 @@ class Client(YandexMusicObject): return Playlist.de_json(result, self) @log - def users_playlists_visibility(self, kind: Union[str, int], visibility: str, user_id: str = None, + def users_playlists_visibility(self, kind: Union[str, int], visibility: str, user_id: Union[str, int] = None, timeout: Union[int, float] = None, *args, **kwargs) -> Optional[Playlist]: """Изменение видимости плейлиста. @@ -787,7 +865,7 @@ class Client(YandexMusicObject): Args: kind (:obj:`str` | :obj:`int`): Уникальный идентификатор плейлиста. visibility (:obj:`str`): Новое название. - user_id: (:obj:`int`, optional): Уникальный идентификатор пользователя владеющим плейлистом. + user_id (:obj:`str` | :obj:`int`, optional): Уникальный идентификатор пользователя владеющим плейлистом. timeout (:obj:`int` | :obj:`float`, optional): Если это значение указано, используется как время ожидания ответа от сервера вместо указанного при создании пула. **kwargs (:obj:`dict`, optional): Произвольные аргументы (будут переданы в запрос). @@ -810,8 +888,9 @@ class Client(YandexMusicObject): return Playlist.de_json(result, self) @log - def users_playlists_change(self, kind: Union[str, int], diff: str, revision: int = 1, user_id: str = None, - timeout: Union[int, float] = None, *args, **kwargs) -> Optional[Playlist]: + def users_playlists_change(self, kind: Union[str, int], diff: str, revision: int = 1, + user_id: Union[str, int] = None, timeout: Union[int, float] = None, + *args, **kwargs) -> Optional[Playlist]: """Изменение плейлиста. Для получения отличий есть вспомогательный класс :class:`from yandex_music.utils.difference.Difference`. @@ -821,7 +900,7 @@ class Client(YandexMusicObject): kind (:obj:`str` | :obj:`int`): Уникальный идентификатор плейлиста. revision (:obj:`int`): TODO. diff (:obj:`str`): JSON представления отличий старого и нового плейлиста. - user_id: (:obj:`int`, optional): Уникальный идентификатор пользователя владеющим плейлистом. + user_id (:obj:`str` | :obj:`int`, optional): Уникальный идентификатор пользователя владеющим плейлистом. timeout (:obj:`int` | :obj:`float`, optional): Если это значение указано, используется как время ожидания ответа от сервера вместо указанного при создании пула. **kwargs (:obj:`dict`, optional): Произвольные аргументы (будут переданы в запрос). @@ -851,7 +930,7 @@ class Client(YandexMusicObject): @log def users_playlists_insert_track(self, kind: Union[str, int], track_id: Union[str, int], album_id: Union[str, int], - at: int = 0, revision: int = 1, user_id: str = None, + at: int = 0, revision: int = 1, user_id: Union[str, int] = None, timeout: Union[int, float] = None, *args, **kwargs) -> Optional[Playlist]: """Добавление трека в плейлист. @@ -863,7 +942,7 @@ class Client(YandexMusicObject): album_id (:obj:`str` | :obj:`int`): Уникальный идентификатор альбома. at (:obj:`int`): Индекс для вставки. revision (:obj:`int`): TODO. - user_id: (:obj:`int`, optional): Уникальный идентификатор пользователя владеющим плейлистом. + user_id (:obj:`str` | :obj:`int`, optional): Уникальный идентификатор пользователя владеющим плейлистом. timeout (:obj:`int` | :obj:`float`, optional): Если это значение указано, используется как время ожидания ответа от сервера вместо указанного при создании пула. **kwargs (:obj:`dict`, optional): Произвольные аргументы (будут переданы в запрос). @@ -885,7 +964,7 @@ class Client(YandexMusicObject): @log def users_playlists_delete_track(self, kind: Union[str, int], from_: int, to: int, revision: int = 1, - user_id: str = None, timeout: Union[int, float] = None, + user_id: Union[str, int] = None, timeout: Union[int, float] = None, *args, **kwargs) -> Optional[Playlist]: """Удаление треков из плейлиста. @@ -896,7 +975,7 @@ class Client(YandexMusicObject): from_ (:obj:`int`): С какого индекса. to (:obj:`int`): По какой индекс. revision (:obj:`int`): TODO. - user_id: (:obj:`int`, optional): Уникальный идентификатор пользователя владеющим плейлистом. + user_id (:obj:`str` | :obj:`int`, optional): Уникальный идентификатор пользователя владеющим плейлистом. timeout (:obj:`int` | :obj:`float`, optional): Если это значение указано, используется как время ожидания ответа от сервера вместо указанного при создании пула. **kwargs (:obj:`dict`, optional): Произвольные аргументы (будут переданы в запрос). diff --git a/yandex_music/settings.py b/yandex_music/settings.py index adb95af..530a622 100644 --- a/yandex_music/settings.py +++ b/yandex_music/settings.py @@ -7,7 +7,7 @@ from yandex_music import YandexMusicObject class Settings(YandexMusicObject): - """Класс представляющий предложения по покупке. + """Класс, представляющий предложения по покупке. Attributes: in_app_products (:obj:`list` из :obj:`yandex_music.Product`): Список объектов класса