New supported objects: Search, Suggestions, Video, Best, AlbumSearchResult, ArtistSearchResult, PlaylistSearchResult, TrackSearchResult, VideoSearchResult,
The following methods are wrapped:
- /search
- /search/suggest
The following classes received optional fields instead of required ones: Album, Artist, Playlist, Track
Added "params" arg to the GET request
Code refactoring
2019-05-18 01:20:34 +09:00
|
|
|
|
from yandex_music import YandexMusicObject
|
2019-05-07 06:02:21 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Account(YandexMusicObject):
|
2019-07-02 20:40:41 +09:00
|
|
|
|
"""Класс предоставляющий основную информацию об аккаунте пользователя.
|
|
|
|
|
|
|
|
|
|
Attributes:
|
2019-11-08 04:52:26 +09:00
|
|
|
|
now (:obj:`str`): Текущая дата и время.
|
2019-07-02 20:40:41 +09:00
|
|
|
|
uid (:obj:`int`): Уникальный идентификатор.
|
|
|
|
|
login (:obj:`str`): Виртуальное имя (обычно e-mail).
|
|
|
|
|
full_name (:obj:`str`): Полное имя (имя и фамилия).
|
|
|
|
|
second_name (:obj:`str`): Фамилия.
|
|
|
|
|
first_name (:obj:`str`): Имя.
|
|
|
|
|
display_name (:obj:`str`): Отображаемое имя.
|
2019-11-08 04:52:26 +09:00
|
|
|
|
birthday (:obj:`str`): Дата рождения.
|
2019-07-02 20:40:41 +09:00
|
|
|
|
service_available (:obj:`bool`): Доступен ли сервис.
|
|
|
|
|
hosted_user (:obj:`bool`): Является ли пользователем чьим-то другим.
|
|
|
|
|
region (:obj:`int`): Регион.
|
2019-07-05 02:21:54 +09:00
|
|
|
|
passport_phones (:obj:`list` из :obj:`yandex_music.PassportPhone`): Список объектов класса
|
|
|
|
|
:class:`yandex_music.PassportPhone` представляющие мобильные номера.
|
2019-11-08 04:52:26 +09:00
|
|
|
|
registered_at (:obj:`str`): Дата создания аккаунта.
|
2019-07-02 20:40:41 +09:00
|
|
|
|
has_info_for_app_metrica (:obj:`bool`): Наличие информации для App Metrica.
|
2019-07-05 02:21:54 +09:00
|
|
|
|
client (:obj:`yandex_music.Client`): Объект класса :class:`yandex_music.Client` представляющий клиент Yandex
|
2019-07-02 20:40:41 +09:00
|
|
|
|
Music.
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
now (:obj:`str`): Текущая дата и время.
|
2019-08-23 03:56:02 +09:00
|
|
|
|
uid (:obj:`int`, optional): Уникальный идентификатор.
|
|
|
|
|
login (:obj:`str`, optional): Виртуальное имя (обычно e-mail).
|
|
|
|
|
full_name (:obj:`str`, optional): Полное имя (имя и фамилия).
|
|
|
|
|
second_name (:obj:`str`, optional): Фамилия.
|
|
|
|
|
first_name (:obj:`str`, optional): Имя.
|
|
|
|
|
display_name (:obj:`str`, optional): Отображаемое имя.
|
2019-07-02 20:40:41 +09:00
|
|
|
|
service_available (:obj:`bool`): Доступен ли сервис.
|
2019-08-23 03:56:02 +09:00
|
|
|
|
hosted_user (:obj:`bool`, optional): Является ли пользователем чьим-то другим.
|
2019-07-08 22:09:00 +09:00
|
|
|
|
birthday (:obj:`str`, optional): Дата рождения.
|
Добавлены основные тесты для следующий классов: Account, CaseForms, Cover, DownloadInfo, Enum, InvocationInfo, Lyrics, MadeFor, Permissions, PersonalPlaylistsData, PlayContextsData, Promotion, RotorSettings, Subsription,
Исправлены фикстуры и сравнения для вышеперечисленных классов.
Починен conftest.py
2019-11-08 09:30:15 +09:00
|
|
|
|
region (:obj:`int`, optional): Регион.
|
2019-07-05 02:21:54 +09:00
|
|
|
|
passport_phones (:obj:`list` из :obj:`yandex_music.PassportPhone`): Список объектов класса
|
|
|
|
|
:class:`yandex_music.PassportPhone` представляющие мобильные номера.
|
2019-07-03 21:28:54 +09:00
|
|
|
|
registered_at (:obj:`str`, optional): Дата создания учётной записи.
|
2019-07-02 20:40:41 +09:00
|
|
|
|
has_info_for_app_metrica (:obj:`bool`, optional): Наличие информации для App Metrica.
|
2019-07-05 02:21:54 +09:00
|
|
|
|
client (:obj:`yandex_music.Client`, optional): Объект класса :class:`yandex_music.Client` представляющий клиент
|
2019-07-03 21:28:54 +09:00
|
|
|
|
Yandex Music.
|
2019-07-02 20:40:41 +09:00
|
|
|
|
**kwargs: Произвольные ключевые аргументы полученные от API.
|
|
|
|
|
"""
|
|
|
|
|
|
2019-05-07 06:02:21 +09:00
|
|
|
|
def __init__(self,
|
|
|
|
|
now,
|
|
|
|
|
service_available,
|
2019-11-08 04:52:26 +09:00
|
|
|
|
region=None,
|
2019-08-23 03:56:02 +09:00
|
|
|
|
uid=None,
|
|
|
|
|
login=None,
|
|
|
|
|
full_name=None,
|
|
|
|
|
second_name=None,
|
|
|
|
|
first_name=None,
|
|
|
|
|
display_name=None,
|
|
|
|
|
hosted_user=None,
|
2019-07-08 22:09:00 +09:00
|
|
|
|
birthday=None,
|
New supported objects: Station, StationResult, StationTrackResult, Value, Sequence, RotorSettings, Restrictions, Id, Enum, DiscreteScale, DashBoard, AdParams
The following methods are wrapped:
- /rotor/account/status
- /rotor/stations/dashboard
- /rotor/stations/list
- /rotor/station/genre:{genre}/feedback
- /rotor/station/genre:{genre}/info
- /rotor/station/genre:{genre}/tracks
The following fields are now optional: Account[region, passport_phones], Status[cache_limit, subeditor, subeditor_level, plus], Subscription[auto_renewable, can_start_trial, mcdonalds]
Added new fields: Subscription.end, Status[skips_per_hour, station_exists, premium_region], Track..preview_duration_ms
Fixed downloading the cover of the track
2019-06-03 22:16:24 +09:00
|
|
|
|
passport_phones=None,
|
2019-05-16 21:45:25 +09:00
|
|
|
|
registered_at=None,
|
2019-05-07 06:02:21 +09:00
|
|
|
|
has_info_for_app_metrica=False,
|
|
|
|
|
client=None,
|
|
|
|
|
**kwargs):
|
2019-11-08 04:52:26 +09:00
|
|
|
|
self.now = now
|
2019-08-23 03:56:02 +09:00
|
|
|
|
self.service_available = service_available
|
|
|
|
|
|
2019-11-08 04:52:26 +09:00
|
|
|
|
self.region = region
|
2019-05-07 06:02:21 +09:00
|
|
|
|
self.uid = uid
|
|
|
|
|
self.login = login
|
|
|
|
|
self.full_name = full_name
|
|
|
|
|
self.second_name = second_name
|
|
|
|
|
self.first_name = first_name
|
|
|
|
|
self.display_name = display_name
|
New supported objects: Album, CaseForms, Label, Library, MadeFor, Major, Normalization, PlayCounter, Playlist, Track, TrackPosition, TrackShort, User
The following methods are wrapped:
- albums;
- playlists/list;
- users/{user_id}/playlists/list;
- tracks;
- users/{user_id}/likes/tracks.
Added property to get full track ID
Cover received more optional fields
Ability to pass arguments to the request
Removed unnecessary type conversions
2019-05-13 02:39:12 +09:00
|
|
|
|
self.hosted_user = hosted_user
|
2019-05-10 00:28:46 +09:00
|
|
|
|
self.passport_phones = passport_phones
|
2019-11-08 04:52:26 +09:00
|
|
|
|
self.birthday = birthday
|
|
|
|
|
self.registered_at = registered_at
|
New supported objects: Album, CaseForms, Label, Library, MadeFor, Major, Normalization, PlayCounter, Playlist, Track, TrackPosition, TrackShort, User
The following methods are wrapped:
- albums;
- playlists/list;
- users/{user_id}/playlists/list;
- tracks;
- users/{user_id}/likes/tracks.
Added property to get full track ID
Cover received more optional fields
Ability to pass arguments to the request
Removed unnecessary type conversions
2019-05-13 02:39:12 +09:00
|
|
|
|
self.has_info_for_app_metrica = has_info_for_app_metrica
|
2019-05-07 06:02:21 +09:00
|
|
|
|
|
2019-05-10 00:28:46 +09:00
|
|
|
|
self.client = client
|
2019-08-23 03:56:02 +09:00
|
|
|
|
|
|
|
|
|
if self.uid:
|
|
|
|
|
self._id_attrs = (self.uid,)
|
2019-05-07 06:02:21 +09:00
|
|
|
|
|
2019-08-18 23:44:46 +09:00
|
|
|
|
def download_avatar(self, filename, format='normal'):
|
|
|
|
|
"""Загрузка изображения пользователя.
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
filename (:obj:`str`): Путь для сохранения файла с названием и расширением.
|
|
|
|
|
format (:obj:`str`): Формат желаемого изображения (normal, orig, small, big).
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
self.client.request.download(f'https://upics.yandex.net/{self.uid}/{format}', filename)
|
|
|
|
|
|
2019-05-07 06:02:21 +09:00
|
|
|
|
@classmethod
|
|
|
|
|
def de_json(cls, data, client):
|
2019-07-02 20:40:41 +09:00
|
|
|
|
"""Десериализация объекта.
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
data (:obj:`dict`): Поля и значения десериализуемого объекта.
|
2019-07-05 02:21:54 +09:00
|
|
|
|
client (:obj:`yandex_music.Client`): Объект класса :class:`yandex_music.Client` представляющий клиент Yandex
|
2019-07-02 20:40:41 +09:00
|
|
|
|
Music.
|
|
|
|
|
|
|
|
|
|
Returns:
|
2019-07-05 02:21:54 +09:00
|
|
|
|
:obj:`yandex_music.Account`: Объект класса :class:`yandex_music.Account`.
|
2019-07-02 20:40:41 +09:00
|
|
|
|
"""
|
2019-05-07 06:02:21 +09:00
|
|
|
|
if not data:
|
|
|
|
|
return None
|
|
|
|
|
|
2019-05-10 00:28:46 +09:00
|
|
|
|
data = super(Account, cls).de_json(data, client)
|
New supported objects: Search, Suggestions, Video, Best, AlbumSearchResult, ArtistSearchResult, PlaylistSearchResult, TrackSearchResult, VideoSearchResult,
The following methods are wrapped:
- /search
- /search/suggest
The following classes received optional fields instead of required ones: Album, Artist, Playlist, Track
Added "params" arg to the GET request
Code refactoring
2019-05-18 01:20:34 +09:00
|
|
|
|
from yandex_music import PassportPhone
|
2019-05-11 05:01:32 +09:00
|
|
|
|
data['passport_phones'] = PassportPhone.de_list(data.get('passport_phones'), client)
|
2019-05-10 00:28:46 +09:00
|
|
|
|
|
2019-05-07 06:02:21 +09:00
|
|
|
|
return cls(client=client, **data)
|
2019-08-18 23:44:46 +09:00
|
|
|
|
|
|
|
|
|
# camelCase псевдонимы
|
|
|
|
|
|
2019-10-19 17:55:45 +09:00
|
|
|
|
#: Псевдоним для :attr:`download_avatar`
|
2019-08-18 23:44:46 +09:00
|
|
|
|
downloadAvatar = download_avatar
|