from typing import TYPE_CHECKING, Optional if TYPE_CHECKING: from yandex_music import Client from yandex_music import YandexMusicObject class UserSettings(YandexMusicObject): """Класс, представляющий настройки пользователя. 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. """ 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, self.last_fm_scrobbling_enabled, self.shuffle_enabled, self.volume_percents, self.modified, self.facebook_scrobbling_enabled, self.add_new_track_on_playlist_top, self.user_music_visibility, self.user_social_visibility, self.rbt_disabled, self.theme, self.promos_disabled, self.auto_play_radio, self.ads_disabled, self.disk_enabled, self.show_disk_tracks_in_library) @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)