Тайп хинты для Label, TrackPosition, Artist, ArtistAlbums, ArtistTracks, BriefInfo, Counts, Description, Link, Ratings, Vinyl, AlbumEvent, ArtistEvent, Day, Event, GeneratedPlaylist, TrackWithAds, Genre, Images, Title
このコミットが含まれているのは:
コミット
510b37bb32
|
@ -17,13 +17,13 @@ class Label(YandexMusicObject):
|
||||||
Args:
|
Args:
|
||||||
id_ (:obj:`int`): Идентификатор альбома.
|
id_ (:obj:`int`): Идентификатор альбома.
|
||||||
name (:obj:`str`): Название альбома.
|
name (:obj:`str`): Название альбома.
|
||||||
client (:obj:`yandex_music.Client`, optional): Объект класса :class:`yandex_music.Client` представляющий клиент
|
client (:obj:`yandex_music.Client`, optional): Объект класса :class:`yandex_music.Client` представляющий
|
||||||
Yandex Music.
|
клиент Yandex Music.
|
||||||
**kwargs: Произвольные ключевые аргументы полученные от API.
|
**kwargs: Произвольные ключевые аргументы полученные от API.
|
||||||
"""
|
"""
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
id_,
|
id_: int,
|
||||||
name,
|
name: str,
|
||||||
client: Optional['Client'] = None,
|
client: Optional['Client'] = None,
|
||||||
**kwargs) -> None:
|
**kwargs) -> None:
|
||||||
self.id = id_
|
self.id = id_
|
||||||
|
@ -33,7 +33,7 @@ class Label(YandexMusicObject):
|
||||||
self._id_attrs = (self.id, self.name)
|
self._id_attrs = (self.id, self.name)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def de_json(cls, data: dict, client: 'Client'):
|
def de_json(cls, data: dict, client: 'Client') -> Optional['Label']:
|
||||||
"""Десериализация объекта.
|
"""Десериализация объекта.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
|
@ -51,13 +51,13 @@ class Label(YandexMusicObject):
|
||||||
return cls(client=client, **data)
|
return cls(client=client, **data)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def de_list(cls, data: dict, client: 'Client'):
|
def de_list(cls, data: dict, client: 'Client') -> List['Label']:
|
||||||
"""Десериализация списка объектов.
|
"""Десериализация списка объектов.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
data (:obj:`list`): Список словарей с полями и значениями десериализуемого объекта.
|
data (:obj:`list`): Список словарей с полями и значениями десериализуемого объекта.
|
||||||
client (:obj:`yandex_music.Client`): Объект класса :class:`yandex_music.Client` представляющий клиент Yandex
|
client (:obj:`yandex_music.Client`): Объект класса :class:`yandex_music.Client` представляющий клиент
|
||||||
Music.
|
Yandex Music.
|
||||||
Returns:
|
Returns:
|
||||||
:obj:`list` из :obj:`yandex_music.Label`: Список объектов класса :class:`yandex_music.Label`.
|
:obj:`list` из :obj:`yandex_music.Label`: Список объектов класса :class:`yandex_music.Label`.
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -19,7 +19,7 @@ class TrackPosition(YandexMusicObject):
|
||||||
self._id_attrs = (self.volume, self.index)
|
self._id_attrs = (self.volume, self.index)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def de_json(cls, data: dict, client: 'Client'):
|
def de_json(cls, data: dict, client: 'Client') -> Optional['TrackPosition']:
|
||||||
if not data:
|
if not data:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
from typing import TYPE_CHECKING, Optional, List
|
from typing import TYPE_CHECKING, Optional, List
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from yandex_music import Client
|
from yandex_music import Client, Cover, Ratings, Counts, Link, Track, Description, ArtistTracks, ArtistAlbums
|
||||||
|
|
||||||
from yandex_music import YandexMusicObject
|
from yandex_music import YandexMusicObject
|
||||||
|
|
||||||
|
@ -10,23 +10,23 @@ class Artist(YandexMusicObject):
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
id_,
|
id_,
|
||||||
name,
|
name,
|
||||||
cover,
|
cover: Optional['Cover'],
|
||||||
various=None,
|
various=None,
|
||||||
composer=None,
|
composer=None,
|
||||||
genres=None,
|
genres=None,
|
||||||
op_image=None,
|
op_image=None,
|
||||||
no_pictures_from_search=None,
|
no_pictures_from_search=None,
|
||||||
counts=None,
|
counts: Optional['Counts'] = None,
|
||||||
available=None,
|
available=None,
|
||||||
ratings=None,
|
ratings: Optional['Ratings'] = None,
|
||||||
links=None,
|
links: List['Link'] = None,
|
||||||
tickets_available=None,
|
tickets_available=None,
|
||||||
likes_count=None,
|
likes_count=None,
|
||||||
popular_tracks=None,
|
popular_tracks: List['Track'] = None,
|
||||||
regions=None,
|
regions=None,
|
||||||
decomposed=None,
|
decomposed=None,
|
||||||
full_names=None,
|
full_names=None,
|
||||||
description=None,
|
description: Optional['Description'] = None,
|
||||||
countries=None,
|
countries=None,
|
||||||
en_wikipedia_link=None,
|
en_wikipedia_link=None,
|
||||||
db_aliases=None,
|
db_aliases=None,
|
||||||
|
@ -67,7 +67,7 @@ class Artist(YandexMusicObject):
|
||||||
self.client = client
|
self.client = client
|
||||||
self._id_attrs = (self.id, self.name, self.cover)
|
self._id_attrs = (self.id, self.name, self.cover)
|
||||||
|
|
||||||
def download_op_image(self, filename, size='200x200'):
|
def download_op_image(self, filename: str, size: str = '200x200') -> None:
|
||||||
"""Загрузка обложки.
|
"""Загрузка обложки.
|
||||||
|
|
||||||
Используйте это только когда нет self.cover!
|
Используйте это только когда нет self.cover!
|
||||||
|
@ -79,28 +79,28 @@ class Artist(YandexMusicObject):
|
||||||
|
|
||||||
self.client.request.download(f'https://{self.op_image.replace("%%", size)}', filename)
|
self.client.request.download(f'https://{self.op_image.replace("%%", size)}', filename)
|
||||||
|
|
||||||
def like(self, *args, **kwargs):
|
def like(self, *args, **kwargs) -> bool:
|
||||||
"""Сокращение для::
|
"""Сокращение для::
|
||||||
|
|
||||||
client.users_likes_artists_add(artist.id, user.id *args, **kwargs)
|
client.users_likes_artists_add(artist.id, user.id *args, **kwargs)
|
||||||
"""
|
"""
|
||||||
return self.client.users_likes_artists_add(self.id, self.client.me.account.uid, *args, **kwargs)
|
return self.client.users_likes_artists_add(self.id, self.client.me.account.uid, *args, **kwargs)
|
||||||
|
|
||||||
def dislike(self, *args, **kwargs):
|
def dislike(self, *args, **kwargs) -> bool:
|
||||||
"""Сокращение для::
|
"""Сокращение для::
|
||||||
|
|
||||||
client.users_likes_artists_remove(artist.id, user.id *args, **kwargs)
|
client.users_likes_artists_remove(artist.id, user.id *args, **kwargs)
|
||||||
"""
|
"""
|
||||||
return self.client.users_likes_artists_remove(self.id, self.client.me.account.uid, *args, **kwargs)
|
return self.client.users_likes_artists_remove(self.id, self.client.me.account.uid, *args, **kwargs)
|
||||||
|
|
||||||
def get_tracks(self, page=0, page_size=20, *args, **kwargs):
|
def get_tracks(self, page=0, page_size=20, *args, **kwargs) -> Optional['ArtistTracks']:
|
||||||
"""Сокращение для::
|
"""Сокращение для::
|
||||||
|
|
||||||
client.artists_tracks(artist.id, page, page_size, *args, **kwargs)
|
client.artists_tracks(artist.id, page, page_size, *args, **kwargs)
|
||||||
"""
|
"""
|
||||||
return self.client.artists_tracks(self.id, page, page_size, *args, **kwargs)
|
return self.client.artists_tracks(self.id, page, page_size, *args, **kwargs)
|
||||||
|
|
||||||
def get_albums(self, page=0, page_size=20, sort_by='year', *args, **kwargs):
|
def get_albums(self, page=0, page_size=20, sort_by='year', *args, **kwargs) -> Optional['ArtistAlbums']:
|
||||||
"""Сокращение для::
|
"""Сокращение для::
|
||||||
|
|
||||||
client.artists_direct_albums(artist.id, page, page_size, sort_by, *args, **kwargs)
|
client.artists_direct_albums(artist.id, page, page_size, sort_by, *args, **kwargs)
|
||||||
|
@ -108,7 +108,7 @@ class Artist(YandexMusicObject):
|
||||||
return self.client.artists_direct_albums(self.id, page, page_size, sort_by, *args, **kwargs)
|
return self.client.artists_direct_albums(self.id, page, page_size, sort_by, *args, **kwargs)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def de_json(cls, data: dict, client: 'Client'):
|
def de_json(cls, data: dict, client: 'Client') -> Optional['Artist']:
|
||||||
if not data:
|
if not data:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@ -125,7 +125,7 @@ class Artist(YandexMusicObject):
|
||||||
return cls(client=client, **data)
|
return cls(client=client, **data)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def de_list(cls, data: dict, client: 'Client'):
|
def de_list(cls, data: dict, client: 'Client') -> List['Artist']:
|
||||||
if not data:
|
if not data:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
from typing import TYPE_CHECKING, Optional, List
|
from typing import TYPE_CHECKING, Optional, List
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from yandex_music import Client
|
from yandex_music import Client, Album, Pager
|
||||||
|
|
||||||
from yandex_music import YandexMusicObject
|
from yandex_music import YandexMusicObject
|
||||||
|
|
||||||
|
@ -24,8 +24,8 @@ class ArtistAlbums(YandexMusicObject):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
albums,
|
albums: List['Album'],
|
||||||
pager,
|
pager: Optional['Pager'],
|
||||||
client: Optional['Client'] = None,
|
client: Optional['Client'] = None,
|
||||||
**kwargs) -> None:
|
**kwargs) -> None:
|
||||||
self.albums = albums
|
self.albums = albums
|
||||||
|
@ -35,7 +35,7 @@ class ArtistAlbums(YandexMusicObject):
|
||||||
self._id_attrs = (self.pager, self.albums)
|
self._id_attrs = (self.pager, self.albums)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def de_json(cls, data: dict, client: 'Client'):
|
def de_json(cls, data: dict, client: 'Client') -> Optional['ArtistAlbums']:
|
||||||
"""Десериализация объекта.
|
"""Десериализация объекта.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
from typing import TYPE_CHECKING, Optional, List
|
from typing import TYPE_CHECKING, Optional, List
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from yandex_music import Client
|
from yandex_music import Client, Track, Pager
|
||||||
|
|
||||||
from yandex_music import YandexMusicObject
|
from yandex_music import YandexMusicObject
|
||||||
|
|
||||||
|
@ -24,8 +24,8 @@ class ArtistTracks(YandexMusicObject):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
tracks,
|
tracks: List['Track'],
|
||||||
pager,
|
pager: Optional['Pager'],
|
||||||
client: Optional['Client'] = None,
|
client: Optional['Client'] = None,
|
||||||
**kwargs) -> None:
|
**kwargs) -> None:
|
||||||
self.tracks = tracks
|
self.tracks = tracks
|
||||||
|
@ -35,7 +35,7 @@ class ArtistTracks(YandexMusicObject):
|
||||||
self._id_attrs = (self.pager, self.tracks)
|
self._id_attrs = (self.pager, self.tracks)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def de_json(cls, data: dict, client: 'Client'):
|
def de_json(cls, data: dict, client: 'Client') -> Optional['ArtistTracks']:
|
||||||
"""Десериализация объекта.
|
"""Десериализация объекта.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
|
|
|
@ -1,26 +1,26 @@
|
||||||
from typing import TYPE_CHECKING, Optional, List
|
from typing import TYPE_CHECKING, Optional, List
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from yandex_music import Client
|
from yandex_music import Client, Artist, Track, Album, Cover, PlaylistId, Video, Chart, Vinyl
|
||||||
|
|
||||||
from yandex_music import YandexMusicObject
|
from yandex_music import YandexMusicObject
|
||||||
|
|
||||||
|
|
||||||
class BriefInfo(YandexMusicObject):
|
class BriefInfo(YandexMusicObject):
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
artist,
|
artist: Optional['Artist'],
|
||||||
albums,
|
albums: List['Album'],
|
||||||
also_albums,
|
also_albums: List['Album'],
|
||||||
last_release_ids,
|
last_release_ids,
|
||||||
popular_tracks,
|
popular_tracks: List['Track'],
|
||||||
similar_artists,
|
similar_artists: List['Artist'],
|
||||||
all_covers,
|
all_covers: List['Cover'],
|
||||||
concerts,
|
concerts,
|
||||||
videos,
|
videos: List['Video'],
|
||||||
vinyls,
|
vinyls: List['Vinyl'],
|
||||||
has_promotions,
|
has_promotions,
|
||||||
playlist_ids,
|
playlist_ids: List['PlaylistId'],
|
||||||
tracks_in_chart=None,
|
tracks_in_chart: List['Chart'] = None,
|
||||||
client: Optional['Client'] = None,
|
client: Optional['Client'] = None,
|
||||||
**kwargs) -> None:
|
**kwargs) -> None:
|
||||||
self.artist = artist
|
self.artist = artist
|
||||||
|
@ -44,7 +44,7 @@ class BriefInfo(YandexMusicObject):
|
||||||
self.has_promotions, self.playlist_ids)
|
self.has_promotions, self.playlist_ids)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def de_json(cls, data: dict, client: 'Client'):
|
def de_json(cls, data: dict, client: 'Client') -> Optional['BriefInfo']:
|
||||||
"""Десериализация объекта.
|
"""Десериализация объекта.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
|
|
|
@ -23,7 +23,7 @@ class Counts(YandexMusicObject):
|
||||||
self._id_attrs = (self.tracks, self.direct_albums, self.also_albums, self.also_tracks)
|
self._id_attrs = (self.tracks, self.direct_albums, self.also_albums, self.also_tracks)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def de_json(cls, data: dict, client: 'Client'):
|
def de_json(cls, data: dict, client: 'Client') -> Optional['Counts']:
|
||||||
if not data:
|
if not data:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ class Description(YandexMusicObject):
|
||||||
self._id_attrs = (self.text, self.url)
|
self._id_attrs = (self.text, self.url)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def de_json(cls, data: dict, client: 'Client'):
|
def de_json(cls, data: dict, client: 'Client') -> Optional['Description']:
|
||||||
"""Десериализация объекта.
|
"""Десериализация объекта.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
|
|
|
@ -24,7 +24,7 @@ class Link(YandexMusicObject):
|
||||||
self._id_attrs = (self.title, self.href, self.type)
|
self._id_attrs = (self.title, self.href, self.type)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def de_json(cls, data: dict, client: 'Client'):
|
def de_json(cls, data: dict, client: 'Client') -> Optional['Link']:
|
||||||
if not data:
|
if not data:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ class Link(YandexMusicObject):
|
||||||
return cls(client=client, **data)
|
return cls(client=client, **data)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def de_list(cls, data: dict, client: 'Client'):
|
def de_list(cls, data: dict, client: 'Client') -> List['Link']:
|
||||||
if not data:
|
if not data:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@ class Ratings(YandexMusicObject):
|
||||||
self._id_attrs = (self.week, self.month)
|
self._id_attrs = (self.week, self.month)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def de_json(cls, data: dict, client: 'Client'):
|
def de_json(cls, data: dict, client: 'Client') -> Optional['Ratings']:
|
||||||
if not data:
|
if not data:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ class Vinyl(YandexMusicObject):
|
||||||
self._id_attrs = (self.title, self.price, self.year, self.url, self.price, self.media)
|
self._id_attrs = (self.title, self.price, self.year, self.url, self.price, self.media)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def de_json(cls, data: dict, client: 'Client'):
|
def de_json(cls, data: dict, client: 'Client') -> Optional['Vinyl']:
|
||||||
"""Десериализация объекта.
|
"""Десериализация объекта.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
|
@ -47,7 +47,7 @@ class Vinyl(YandexMusicObject):
|
||||||
return cls(client=client, **data)
|
return cls(client=client, **data)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def de_list(cls, data: dict, client: 'Client'):
|
def de_list(cls, data: dict, client: 'Client') -> List['Vinyl']:
|
||||||
"""Десериализация списка объектов.
|
"""Десериализация списка объектов.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
from typing import TYPE_CHECKING, Optional, List
|
from typing import TYPE_CHECKING, Optional, List
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from yandex_music import Client
|
from yandex_music import Client, Album, Track
|
||||||
|
|
||||||
from yandex_music import YandexMusicObject
|
from yandex_music import YandexMusicObject
|
||||||
|
|
||||||
|
|
||||||
class AlbumEvent(YandexMusicObject):
|
class AlbumEvent(YandexMusicObject):
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
album,
|
album: Optional['Album'],
|
||||||
tracks,
|
tracks: List['Track'],
|
||||||
client: Optional['Client'] = None,
|
client: Optional['Client'] = None,
|
||||||
**kwargs) -> None:
|
**kwargs) -> None:
|
||||||
self.album = album
|
self.album = album
|
||||||
|
@ -19,7 +19,7 @@ class AlbumEvent(YandexMusicObject):
|
||||||
self._id_attrs = (self.album, self.tracks)
|
self._id_attrs = (self.album, self.tracks)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def de_json(cls, data: dict, client: 'Client'):
|
def de_json(cls, data: dict, client: 'Client') -> Optional['AlbumEvent']:
|
||||||
if not data:
|
if not data:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ class AlbumEvent(YandexMusicObject):
|
||||||
return cls(client=client, **data)
|
return cls(client=client, **data)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def de_list(cls, data: dict, client: 'Client'):
|
def de_list(cls, data: dict, client: 'Client') -> List['AlbumEvent']:
|
||||||
if not data:
|
if not data:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
from typing import TYPE_CHECKING, Optional, List
|
from typing import TYPE_CHECKING, Optional, List
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from yandex_music import Client
|
from yandex_music import Client, Artist, Track
|
||||||
|
|
||||||
from yandex_music import YandexMusicObject
|
from yandex_music import YandexMusicObject
|
||||||
|
|
||||||
|
|
||||||
class ArtistEvent(YandexMusicObject):
|
class ArtistEvent(YandexMusicObject):
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
artist,
|
artist: Optional['Artist'],
|
||||||
tracks,
|
tracks: List['Track'],
|
||||||
similar_to_artists_from_history,
|
similar_to_artists_from_history: List['Artist'],
|
||||||
client: Optional['Client'] = None,
|
client: Optional['Client'] = None,
|
||||||
**kwargs) -> None:
|
**kwargs) -> None:
|
||||||
self.artist = artist
|
self.artist = artist
|
||||||
|
@ -21,7 +21,7 @@ class ArtistEvent(YandexMusicObject):
|
||||||
self._id_attrs = (self.artist, self.tracks, self.similar_to_artists_from_history)
|
self._id_attrs = (self.artist, self.tracks, self.similar_to_artists_from_history)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def de_json(cls, data: dict, client: 'Client'):
|
def de_json(cls, data: dict, client: 'Client') -> Optional['ArtistEvent']:
|
||||||
if not data:
|
if not data:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ class ArtistEvent(YandexMusicObject):
|
||||||
return cls(client=client, **data)
|
return cls(client=client, **data)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def de_list(cls, data: dict, client: 'Client'):
|
def de_list(cls, data: dict, client: 'Client') -> List['ArtistEvent']:
|
||||||
if not data:
|
if not data:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
from typing import TYPE_CHECKING, Optional, List
|
from typing import TYPE_CHECKING, Optional, List
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from yandex_music import Client
|
from yandex_music import Client, Event, Track, TrackWithAds
|
||||||
|
|
||||||
from yandex_music import YandexMusicObject
|
from yandex_music import YandexMusicObject
|
||||||
|
|
||||||
|
@ -9,9 +9,9 @@ from yandex_music import YandexMusicObject
|
||||||
class Day(YandexMusicObject):
|
class Day(YandexMusicObject):
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
day,
|
day,
|
||||||
events,
|
events: List['Event'],
|
||||||
tracks_to_play_with_ads,
|
tracks_to_play_with_ads: List['TrackWithAds'],
|
||||||
tracks_to_play,
|
tracks_to_play: List['Track'],
|
||||||
client: Optional['Client'] = None,
|
client: Optional['Client'] = None,
|
||||||
**kwargs) -> None:
|
**kwargs) -> None:
|
||||||
self.day = day
|
self.day = day
|
||||||
|
@ -23,7 +23,7 @@ class Day(YandexMusicObject):
|
||||||
self._id_attrs = (self.day, self.events, self.tracks_to_play_with_ads, self.tracks_to_play)
|
self._id_attrs = (self.day, self.events, self.tracks_to_play_with_ads, self.tracks_to_play)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def de_json(cls, data: dict, client: 'Client'):
|
def de_json(cls, data: dict, client: 'Client') -> Optional['Day']:
|
||||||
if not data:
|
if not data:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ class Day(YandexMusicObject):
|
||||||
return cls(client=client, **data)
|
return cls(client=client, **data)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def de_list(cls, data: dict, client: 'Client'):
|
def de_list(cls, data: dict, client: 'Client') -> List['Day']:
|
||||||
if not data:
|
if not data:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
from typing import TYPE_CHECKING, Optional, List
|
from typing import TYPE_CHECKING, Optional, List
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from yandex_music import Client
|
from yandex_music import Client, Track, AlbumEvent, ArtistEvent
|
||||||
|
|
||||||
from yandex_music import YandexMusicObject
|
from yandex_music import YandexMusicObject
|
||||||
|
|
||||||
|
@ -12,9 +12,9 @@ class Event(YandexMusicObject):
|
||||||
type_,
|
type_,
|
||||||
type_for_from=None,
|
type_for_from=None,
|
||||||
title=None,
|
title=None,
|
||||||
tracks=None,
|
tracks: List['Track'] = None,
|
||||||
artists=None,
|
artists: List['ArtistEvent'] = None,
|
||||||
albums=None,
|
albums: List['AlbumEvent'] = None,
|
||||||
message=None,
|
message=None,
|
||||||
device=None,
|
device=None,
|
||||||
tracks_count=None,
|
tracks_count=None,
|
||||||
|
@ -36,7 +36,7 @@ class Event(YandexMusicObject):
|
||||||
self._id_attrs = (self.id, self.type)
|
self._id_attrs = (self.id, self.type)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def de_json(cls, data: dict, client: 'Client'):
|
def de_json(cls, data: dict, client: 'Client') -> Optional['Event']:
|
||||||
if not data:
|
if not data:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ class Event(YandexMusicObject):
|
||||||
return cls(client=client, **data)
|
return cls(client=client, **data)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def de_list(cls, data: dict, client: 'Client'):
|
def de_list(cls, data: dict, client: 'Client') -> List['Event']:
|
||||||
if not data:
|
if not data:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
from typing import TYPE_CHECKING, Optional, List
|
from typing import TYPE_CHECKING, Optional, List
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from yandex_music import Client
|
from yandex_music import Client, Playlist
|
||||||
|
|
||||||
from yandex_music import YandexMusicObject
|
from yandex_music import YandexMusicObject
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ class GeneratedPlaylist(YandexMusicObject):
|
||||||
type_,
|
type_,
|
||||||
ready,
|
ready,
|
||||||
notify,
|
notify,
|
||||||
data,
|
data: Optional['Playlist'],
|
||||||
client: Optional['Client'] = None,
|
client: Optional['Client'] = None,
|
||||||
**kwargs) -> None:
|
**kwargs) -> None:
|
||||||
self.type = type_
|
self.type = type_
|
||||||
|
@ -23,7 +23,7 @@ class GeneratedPlaylist(YandexMusicObject):
|
||||||
self._id_attrs = (self.type, self.ready, self.notify, self.data)
|
self._id_attrs = (self.type, self.ready, self.notify, self.data)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def de_json(cls, data: dict, client: 'Client'):
|
def de_json(cls, data: dict, client: 'Client') -> Optional['GeneratedPlaylist']:
|
||||||
if not data:
|
if not data:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ class GeneratedPlaylist(YandexMusicObject):
|
||||||
return cls(client=client, **data)
|
return cls(client=client, **data)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def de_list(cls, data: dict, client: 'Client'):
|
def de_list(cls, data: dict, client: 'Client') -> List['GeneratedPlaylist']:
|
||||||
if not data:
|
if not data:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
from typing import TYPE_CHECKING, Optional, List
|
from typing import TYPE_CHECKING, Optional, List
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from yandex_music import Client
|
from yandex_music import Client, Track
|
||||||
|
|
||||||
from yandex_music import YandexMusicObject
|
from yandex_music import YandexMusicObject
|
||||||
|
|
||||||
|
|
||||||
class TrackWithAds(YandexMusicObject):
|
class TrackWithAds(YandexMusicObject):
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
type_,
|
type_: str,
|
||||||
track,
|
track: Optional['Track'],
|
||||||
client: Optional['Client'] = None,
|
client: Optional['Client'] = None,
|
||||||
**kwargs) -> None:
|
**kwargs) -> None:
|
||||||
self.type = type_
|
self.type = type_
|
||||||
|
@ -19,7 +19,7 @@ class TrackWithAds(YandexMusicObject):
|
||||||
self._id_attrs = (self.type, self.track)
|
self._id_attrs = (self.type, self.track)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def de_json(cls, data: dict, client: 'Client'):
|
def de_json(cls, data: dict, client: 'Client') -> Optional['TrackWithAds']:
|
||||||
if not data:
|
if not data:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ class TrackWithAds(YandexMusicObject):
|
||||||
return cls(client=client, **data)
|
return cls(client=client, **data)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def de_list(cls, data: dict, client: 'Client'):
|
def de_list(cls, data: dict, client: 'Client') -> List['TrackWithAds']:
|
||||||
if not data:
|
if not data:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
from typing import TYPE_CHECKING, Optional, List
|
from typing import TYPE_CHECKING, Optional, List, Dict
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from yandex_music import Client
|
from yandex_music import Client, Title, Icon, Images
|
||||||
|
|
||||||
from yandex_music import YandexMusicObject
|
from yandex_music import YandexMusicObject
|
||||||
|
|
||||||
|
@ -12,14 +12,14 @@ class Genre(YandexMusicObject):
|
||||||
weight,
|
weight,
|
||||||
composer_top,
|
composer_top,
|
||||||
title,
|
title,
|
||||||
titles,
|
titles: Dict[str, Optional['Title']],
|
||||||
images,
|
images: Optional['Images'],
|
||||||
show_in_menu,
|
show_in_menu,
|
||||||
full_title=None,
|
full_title=None,
|
||||||
url_part=None,
|
url_part=None,
|
||||||
color=None,
|
color=None,
|
||||||
radio_icon=None,
|
radio_icon: Optional['Icon'] = None,
|
||||||
sub_genres=None,
|
sub_genres: List['Genre'] = None,
|
||||||
hide_in_regions=None,
|
hide_in_regions=None,
|
||||||
client: Optional['Client'] = None,
|
client: Optional['Client'] = None,
|
||||||
**kwargs) -> None:
|
**kwargs) -> None:
|
||||||
|
@ -42,7 +42,7 @@ class Genre(YandexMusicObject):
|
||||||
self._id_attrs = (self.id, self.weight, self.composer_top, self.title, self.images, self.show_in_menu)
|
self._id_attrs = (self.id, self.weight, self.composer_top, self.title, self.images, self.show_in_menu)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def de_json(cls, data: dict, client: 'Client'):
|
def de_json(cls, data: dict, client: 'Client') -> Optional['Genre']:
|
||||||
if not data:
|
if not data:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ class Genre(YandexMusicObject):
|
||||||
return cls(client=client, **data)
|
return cls(client=client, **data)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def de_list(cls, data: dict, client: 'Client'):
|
def de_list(cls, data: dict, client: 'Client') -> List['Genre']:
|
||||||
if not data:
|
if not data:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
|
|
@ -8,8 +8,8 @@ from yandex_music import YandexMusicObject
|
||||||
|
|
||||||
class Images(YandexMusicObject):
|
class Images(YandexMusicObject):
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
_208x208=None,
|
_208x208: Optional[str] = None,
|
||||||
_300x300=None,
|
_300x300: Optional[str] = None,
|
||||||
client: Optional['Client'] = None,
|
client: Optional['Client'] = None,
|
||||||
**kwargs) -> None:
|
**kwargs) -> None:
|
||||||
self._208x208 = _208x208
|
self._208x208 = _208x208
|
||||||
|
@ -17,7 +17,7 @@ class Images(YandexMusicObject):
|
||||||
|
|
||||||
self.client = client
|
self.client = client
|
||||||
|
|
||||||
def download_208x208(self, filename):
|
def download_208x208(self, filename: str) -> None:
|
||||||
"""Загрузка изображения 208x208.
|
"""Загрузка изображения 208x208.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
|
@ -26,7 +26,7 @@ class Images(YandexMusicObject):
|
||||||
|
|
||||||
self.client.request.download(self._208x208, filename)
|
self.client.request.download(self._208x208, filename)
|
||||||
|
|
||||||
def download_300x300(self, filename):
|
def download_300x300(self, filename: str) -> None:
|
||||||
"""Загрузка изображения 300x300.
|
"""Загрузка изображения 300x300.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
|
@ -36,7 +36,7 @@ class Images(YandexMusicObject):
|
||||||
self.client.request.download(self._300x300, filename)
|
self.client.request.download(self._300x300, filename)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def de_json(cls, data: dict, client: 'Client'):
|
def de_json(cls, data: dict, client: 'Client') -> Optional['Images']:
|
||||||
if not data:
|
if not data:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
from typing import TYPE_CHECKING, Optional
|
from typing import TYPE_CHECKING, Optional, Dict
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from yandex_music import Client
|
from yandex_music import Client
|
||||||
|
@ -19,7 +19,7 @@ class Title(YandexMusicObject):
|
||||||
self._id_attrs = (self.title, self.full_title)
|
self._id_attrs = (self.title, self.full_title)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def de_json(cls, data: dict, client: 'Client'):
|
def de_json(cls, data: dict, client: 'Client') -> Optional['Title']:
|
||||||
if not data:
|
if not data:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ class Title(YandexMusicObject):
|
||||||
return cls(client=client, **data)
|
return cls(client=client, **data)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def de_dict(cls, data, client):
|
def de_dict(cls, data, client) -> Dict[str, Optional['Title']]:
|
||||||
if not data:
|
if not data:
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
|
|
読み込み中…
新しいイシューから参照