Добавлен класс TracksSimilar с полями трека и списка похожих треков.
Добавлен метод для получения похожих треков. #197
このコミットが含まれているのは:
コミット
16aae08b07
|
@ -44,6 +44,7 @@ from .tracks_list import TracksList
|
|||
from .track.major import Major
|
||||
from .track.normalization import Normalization
|
||||
from .track.track import Track
|
||||
from .track.tracks_similar import TracksSimilar
|
||||
|
||||
from .likes.albums_likes import AlbumsLikes
|
||||
from .likes.artists_likes import ArtistsLikes
|
||||
|
@ -119,4 +120,4 @@ __all__ = ['YandexMusicObject', 'Client', 'Account', 'PassportPhone', 'Invocatio
|
|||
'Icon', 'Images', 'Id', 'Station', 'Dashboard', 'RotorSettings', 'AdParams', 'Restrictions', 'Value', 'Enum',
|
||||
'DiscreteScale', 'StationResult', 'Sequence', 'StationTracksResult', 'BriefInfo', 'Description',
|
||||
'PlaylistId', 'Vinyl', 'Supplement', 'Lyrics', 'VideoSupplement', 'ArtistTracks', 'Pager', 'ArtistAlbums',
|
||||
'PlaylistAbsence', 'Shot', 'ShotEvent', 'ShotType', 'ShotData']
|
||||
'PlaylistAbsence', 'Shot', 'ShotEvent', 'ShotType', 'ShotData', 'TracksSimilar']
|
||||
|
|
|
@ -6,7 +6,7 @@ from typing import Callable, Union, List, Optional
|
|||
from yandex_music import YandexMusicObject, Status, Settings, PermissionAlerts, Experiments, Artist, Album, Playlist, \
|
||||
TracksList, Track, AlbumsLikes, ArtistsLikes, PlaylistsLikes, Feed, PromoCodeStatus, DownloadInfo, Search, \
|
||||
Suggestions, Landing, Genre, Dashboard, StationResult, StationTracksResult, BriefInfo, Supplement, ArtistTracks, \
|
||||
ArtistAlbums, ShotEvent
|
||||
ArtistAlbums, ShotEvent, TracksSimilar
|
||||
from yandex_music.utils.request import Request
|
||||
from yandex_music.utils.difference import Difference
|
||||
from yandex_music.exceptions import InvalidToken, Captcha
|
||||
|
@ -465,6 +465,15 @@ class Client(YandexMusicObject):
|
|||
|
||||
return Supplement.de_json(result, self)
|
||||
|
||||
@log
|
||||
def tracks_similar(self, track_id: Union[str, int], timeout: Union[int, float] = None,
|
||||
*args, **kwargs) -> Optional:
|
||||
url = f'{self.base_url}/tracks/{track_id}/similar'
|
||||
|
||||
result = self._request.get(url, timeout=timeout, *args, **kwargs)
|
||||
|
||||
return TracksSimilar.de_json(result, self)
|
||||
|
||||
@log
|
||||
def play_audio(self,
|
||||
track_id: Union[str, int],
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
from typing import TYPE_CHECKING, Optional, List
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from yandex_music import Client, Track
|
||||
|
||||
from yandex_music import YandexMusicObject
|
||||
|
||||
|
||||
class TracksSimilar(YandexMusicObject):
|
||||
def __init__(self,
|
||||
track: Optional['Track'],
|
||||
similar_tracks: List['Track'],
|
||||
client: Optional['Client'] = None,
|
||||
**kwargs) -> None:
|
||||
self.track = track
|
||||
self.similar_tracks = similar_tracks
|
||||
|
||||
self.client = client
|
||||
self._id_attrs = (self.track, self.similar_tracks)
|
||||
|
||||
@classmethod
|
||||
def de_json(cls, data: dict, client: 'Client') -> Optional['TracksSimilar']:
|
||||
if not data:
|
||||
return None
|
||||
|
||||
data = super(TracksSimilar, cls).de_json(data, client)
|
||||
from yandex_music import Track
|
||||
data['track'] = Track.de_json(data.get('track'), client)
|
||||
data['similar_tracks'] = Track.de_list(data.get('similar_tracks'), client)
|
||||
|
||||
return cls(client=client, **data)
|
読み込み中…
新しいイシューから参照