yandex-music-api/yandex_music/account/user_settings.py

102 行
4.3 KiB
Python
Raw Blame 履歴

このファイルには曖昧(ambiguous)なUnicode文字が含まれています

このファイルには、他の文字と見間違える可能性があるUnicode文字が含まれています。 それが意図的なものと考えられる場合は、この警告を無視して構いません。 それらの文字を表示するにはエスケープボタンを使用します。

from typing import TYPE_CHECKING, Optional
from yandex_music import YandexMusicObject
from yandex_music.utils import model
if TYPE_CHECKING:
from yandex_music import Client
@model
class UserSettings(YandexMusicObject):
"""Класс, представляющий настройки пользователя.
Note:
Доступные значения для поля `theme`: `white`, `black`.
Доступные значения для полей `user_music_visibility` и `user_social_visibility`: `private`, `public`.
Note:
`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`): Бесконечный поток музыки.
sync_queue_enabled (: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): Клиент Yandex Music.
"""
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
sync_queue_enabled: bool
ads_disabled: Optional[bool] = None
disk_enabled: Optional[bool] = None
show_disk_tracks_in_library: Optional[bool] = None
client: Optional['Client'] = None
def __post_init__(self):
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.sync_queue_enabled,
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`, optional): Клиент Yandex Music.
Returns:
:obj:`yandex_music.UserSettings`: Настройки пользователя.
"""
if not data:
return None
data = super(UserSettings, cls).de_json(data, client)
return cls(client=client, **data)