user.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. from dataclasses import field
  2. from typing import TYPE_CHECKING, List, Optional
  3. from yandex_music import YandexMusicModel
  4. from yandex_music.utils import model
  5. if TYPE_CHECKING:
  6. from yandex_music import ClientType
  7. @model
  8. class User(YandexMusicModel):
  9. """Класс, представляющий пользователя.
  10. Note:
  11. Когда данный класс используется в `MadeFor` и `Playlist, то доступны все поля кроме `display_name` и
  12. `full_name`.
  13. При наличии экземпляра класса в `user_info` у `Track` (у самозагруженных треков) доступны только `uid`,
  14. '`login`, 'display_name` и `full_name`.
  15. Поле `regions` есть только при возвращении пользователей в результатах поисках.
  16. Attributes:
  17. uid (:obj:`int`): Идентификатор пользователя.
  18. login (:obj:`str`): Логин пользователя.
  19. name (:obj:`str`, optional): Имя пользователя.
  20. display_name (:obj:`str`, optional): Отображаемое пользователя.
  21. full_name (:obj:`str`, optional): Полное имя пользователя.
  22. sex (:obj:`str`, optional): Пол пользователя.
  23. verified (:obj:`bool`, optional): Участвует ли пользователь в генерации плейлистов дня и т.д., и т.п.
  24. regions (:obj:`list` из :obj:`int`, optional): Список регионов TODO.
  25. client (:obj:`yandex_music.Client`, optional): Клиент Yandex Music.
  26. """
  27. uid: int
  28. login: str
  29. name: Optional[str] = None
  30. display_name: Optional[str] = None
  31. full_name: Optional[str] = None
  32. sex: Optional[str] = None
  33. verified: Optional[bool] = None
  34. regions: List[int] = field(default_factory=list)
  35. client: Optional['ClientType'] = None
  36. def __post_init__(self) -> None:
  37. self._id_attrs = (self.uid, self.login)