track_short_old.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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, JSONType, TrackId
  6. @model
  7. class TrackShortOld(YandexMusicModel):
  8. """Класс, представляющий сокращённую версию трека.
  9. Note:
  10. Данная версия менее богата полями и найдена позже первой, поэтому была принята как за старую версию.
  11. Другая версия сокращённого трека: :class:`yandex_music.TrackShort`.
  12. Attributes:
  13. track_id (:obj:`yandex_music.TrackId`): Уникальный идентификатор трека.
  14. timestamp (:obj:`str`): Дата TODO.
  15. client (:obj:`yandex_music.Client`, optional): Клиент Yandex Music.
  16. """
  17. track_id: Optional['TrackId']
  18. timestamp: str
  19. client: Optional['ClientType'] = None
  20. def __post_init__(self) -> None:
  21. self._id_attrs = (self.track_id,)
  22. @classmethod
  23. def de_json(cls, data: 'JSONType', client: 'ClientType') -> Optional['TrackShortOld']:
  24. """Десериализация объекта.
  25. Args:
  26. data (:obj:`dict`): Поля и значения десериализуемого объекта.
  27. client (:obj:`yandex_music.Client`, optional): Клиент Yandex Music.
  28. Returns:
  29. :obj:`yandex_music.TrackShortOld`: Сокращённая версия трека или :obj:`None`.
  30. """
  31. if not cls.is_dict_model_data(data):
  32. return None
  33. cls_data = cls.cleanup_data(data, client)
  34. from yandex_music import TrackId
  35. cls_data['track_id'] = TrackId.de_json(data.get('track_id'), client)
  36. return cls(client=client, **cls_data) # type: ignore