user_settings.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. from typing import TYPE_CHECKING, Optional
  2. from yandex_music import YandexMusicModel
  3. from yandex_music.utils import model
  4. if TYPE_CHECKING:
  5. from yandex_music import ClientType
  6. @model
  7. class UserSettings(YandexMusicModel):
  8. """Класс, представляющий настройки пользователя.
  9. Note:
  10. Доступные значения для поля `theme`: `white`, `black`.
  11. Доступные значения для полей `user_music_visibility` и `user_social_visibility`: `private`, `public`.
  12. Note:
  13. `promos_disabled`, `ads_disabled`, `rbt_disabled` устарели и не работают.
  14. `last_fm_scrobbling_enabled`, `facebook_scrobbling_enabled` выглядят устаревшими.
  15. Attributes:
  16. uid (:obj:`int`): Уникальный идентификатор пользователя.
  17. last_fm_scrobbling_enabled (:obj:`bool`): Скробблинг lastfm.
  18. shuffle_enabled (:obj:`bool`): Переключать треки в случайном порядке.
  19. volume_percents (:obj:`int`): Громкость звука в процентах.
  20. modified (:obj:`str`): Дата изменения настроек.
  21. facebook_scrobbling_enabled (:obj:`bool`): Скробблинг facebook.
  22. add_new_track_on_playlist_top (:obj:`bool`): Добавлять новые треки в начало плейлиста.
  23. user_music_visibility (:obj:`str`): Публичный доступ к моей фонотеке.
  24. user_social_visibility (:obj:`str`): Показывать соцсети на странице.
  25. rbt_disabled (:obj:`bool`): TODO (неиспользуемая фича).
  26. theme (:obj:`str`): Тема оформления.
  27. promos_disabled (:obj:`bool`): Не показывать рекламируемый контент).
  28. auto_play_radio (:obj:`bool`): Бесконечный поток музыки.
  29. sync_queue_enabled (:obj:`bool`): Синхронизация очередей между устройствами.
  30. ads_disabled (:obj:`bool`, optional): Не показывать рекламу.
  31. disk_enabled (:obj:`bool`, optional): TODO.
  32. show_disk_tracks_in_library (:obj:`bool`, optional): Показывать локальные треки в библиотеке.
  33. client (:obj:`yandex_music.Client`, optional): Клиент Yandex Music.
  34. """
  35. uid: int
  36. last_fm_scrobbling_enabled: bool
  37. shuffle_enabled: bool
  38. volume_percents: int
  39. modified: str
  40. facebook_scrobbling_enabled: bool
  41. add_new_track_on_playlist_top: bool
  42. user_music_visibility: str
  43. user_social_visibility: str
  44. rbt_disabled: bool
  45. theme: str
  46. promos_disabled: bool
  47. auto_play_radio: bool
  48. sync_queue_enabled: bool
  49. ads_disabled: Optional[bool] = None
  50. disk_enabled: Optional[bool] = None
  51. show_disk_tracks_in_library: Optional[bool] = None
  52. client: Optional['ClientType'] = None
  53. def __post_init__(self) -> None:
  54. self._id_attrs = (
  55. self.uid,
  56. self.last_fm_scrobbling_enabled,
  57. self.shuffle_enabled,
  58. self.volume_percents,
  59. self.modified,
  60. self.facebook_scrobbling_enabled,
  61. self.add_new_track_on_playlist_top,
  62. self.user_music_visibility,
  63. self.user_social_visibility,
  64. self.rbt_disabled,
  65. self.theme,
  66. self.promos_disabled,
  67. self.auto_play_radio,
  68. self.sync_queue_enabled,
  69. self.ads_disabled,
  70. self.disk_enabled,
  71. self.show_disk_tracks_in_library,
  72. )