2020-01-26 03:09:03 +09:00
|
|
|
|
from typing import TYPE_CHECKING, Optional
|
|
|
|
|
|
2020-01-26 21:19:22 +09:00
|
|
|
|
from yandex_music import YandexMusicObject
|
2021-09-19 22:47:19 +09:00
|
|
|
|
from yandex_music.utils import model
|
2020-01-26 21:19:22 +09:00
|
|
|
|
|
2020-01-26 03:09:03 +09:00
|
|
|
|
if TYPE_CHECKING:
|
|
|
|
|
from yandex_music import Client
|
|
|
|
|
|
|
|
|
|
|
2021-09-19 22:47:19 +09:00
|
|
|
|
@model
|
2020-01-26 03:09:03 +09:00
|
|
|
|
class UserSettings(YandexMusicObject):
|
2020-01-26 08:55:56 +09:00
|
|
|
|
"""Класс, представляющий настройки пользователя.
|
2020-01-26 03:09:03 +09:00
|
|
|
|
|
2020-01-26 08:55:56 +09:00
|
|
|
|
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` выглядят устаревшими.
|
2020-01-26 03:09:03 +09:00
|
|
|
|
|
|
|
|
|
Attributes:
|
2020-01-26 08:55:56 +09:00
|
|
|
|
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`): Бесконечный поток музыки.
|
2021-01-28 01:24:40 +09:00
|
|
|
|
sync_queue_enabled (:obj:`bool`): Синхронизация очередей между устройствами.
|
2020-01-26 08:55:56 +09:00
|
|
|
|
ads_disabled (:obj:`bool`, optional): Не показывать рекламу.
|
|
|
|
|
disk_enabled (:obj:`bool`, optional): TODO.
|
|
|
|
|
show_disk_tracks_in_library (:obj:`bool`, optional): Показывать локальные треки в библиотеке.
|
Удаление избыточной информации (#247)
Классы: Account, AutoRenewable, PassportPhone, Permissions, Plus, Price,
Product, Status, Subscription, UserSettings, Album, Label,
TrackPosition, Playlist
У всех классов изменено описание атрибута client
2020-03-22 04:49:20 +09:00
|
|
|
|
client (:obj:`yandex_music.Client`, optional): Клиент Yandex Music.
|
2020-01-26 03:09:03 +09:00
|
|
|
|
"""
|
|
|
|
|
|
2021-09-19 22:47:19 +09:00
|
|
|
|
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):
|
2021-02-03 21:28:10 +09:00
|
|
|
|
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,
|
|
|
|
|
)
|
2020-01-26 03:09:03 +09:00
|
|
|
|
|
|
|
|
|
@classmethod
|
|
|
|
|
def de_json(cls, data: dict, client: 'Client') -> Optional['UserSettings']:
|
|
|
|
|
"""Десериализация объекта.
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
data (:obj:`dict`): Поля и значения десериализуемого объекта.
|
Удаление избыточной информации (#247)
Классы: Account, AutoRenewable, PassportPhone, Permissions, Plus, Price,
Product, Status, Subscription, UserSettings, Album, Label,
TrackPosition, Playlist
У всех классов изменено описание атрибута client
2020-03-22 04:49:20 +09:00
|
|
|
|
client (:obj:`yandex_music.Client`, optional): Клиент Yandex Music.
|
2020-01-26 03:09:03 +09:00
|
|
|
|
|
|
|
|
|
Returns:
|
Изменения описания de_json и de_list под новый стиль документации (#247).
Классы: Account, AutoRenewable, PassportPhone, Permissions, Plus, Price,
Product, Status, Subscription, UserSettings, Album, Label,
TrackPosition, Playlist
2020-03-22 05:06:19 +09:00
|
|
|
|
:obj:`yandex_music.UserSettings`: Настройки пользователя.
|
2020-01-26 03:09:03 +09:00
|
|
|
|
"""
|
|
|
|
|
if not data:
|
|
|
|
|
return None
|
|
|
|
|
|
|
|
|
|
data = super(UserSettings, cls).de_json(data, client)
|
|
|
|
|
|
|
|
|
|
return cls(client=client, **data)
|