Добавлен класс: PlaylistsRecommendations Добавлен метод: users_playlists_recommendations
このコミットが含まれているのは:
コミット
8501aa89c0
|
@ -36,6 +36,7 @@ from .playlist.play_counter import PlayCounter
|
|||
from .playlist.playlist_id import PlaylistId
|
||||
from .playlist.playlist_absence import PlaylistAbsence
|
||||
from .playlist.playlist import Playlist
|
||||
from .playlist.playlists_recommendations import PlaylistsRecommendations
|
||||
|
||||
from .shot.shot_type import ShotType
|
||||
from .shot.shot_data import ShotData
|
||||
|
@ -119,4 +120,4 @@ __all__ = ['YandexMusicObject', 'Client', 'Account', 'PassportPhone', 'Invocatio
|
|||
'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', 'SimilarTracks', 'UserSettings', 'RenewableRemainder']
|
||||
'ShotType', 'ShotData', 'SimilarTracks', 'UserSettings', 'RenewableRemainder', 'PlaylistsRecommendations']
|
||||
|
|
|
@ -6,7 +6,7 @@ from typing import Callable, Dict, List, Optional, Union
|
|||
from yandex_music import Album, Artist, ArtistAlbums, ArtistTracks, BriefInfo, Dashboard, DownloadInfo, Experiments, \
|
||||
Feed, Genre, Landing, Like, PermissionAlerts, Playlist, PromoCodeStatus, Search, Settings, ShotEvent, SimilarTracks, \
|
||||
StationResult, StationTracksResult, Status, Suggestions, Supplement, Track, TracksList, UserSettings, \
|
||||
YandexMusicObject
|
||||
YandexMusicObject, PlaylistsRecommendations
|
||||
from yandex_music.exceptions import Captcha, InvalidToken
|
||||
from yandex_music.utils.difference import Difference
|
||||
from yandex_music.utils.request import Request
|
||||
|
@ -764,6 +764,19 @@ class Client(YandexMusicObject):
|
|||
|
||||
return Playlist.de_json(result, self)
|
||||
|
||||
@log
|
||||
def users_playlists_recommendations(self, kind: Union[List[Union[str, int]], str, int],
|
||||
user_id: Union[str, int] = None, timeout: Union[int, float] = None, *args,
|
||||
**kwargs):
|
||||
if user_id is None and self.me is not None:
|
||||
user_id = self.me.account.uid
|
||||
|
||||
url = f'{self.base_url}/users/{user_id}/playlists/{kind}/recommendations'
|
||||
|
||||
result = self._request.get(url, timeout=timeout, *args, **kwargs)
|
||||
|
||||
return PlaylistsRecommendations.de_json(result, self)
|
||||
|
||||
@log
|
||||
def users_playlists_create(self, title: str, visibility: str = 'public', user_id: Union[str, int] = None,
|
||||
timeout: Union[int, float] = None, *args, **kwargs) -> Optional[Playlist]:
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
from typing import TYPE_CHECKING, Optional, List
|
||||
|
||||
from yandex_music import YandexMusicObject
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from yandex_music import Client, Track
|
||||
|
||||
|
||||
class PlaylistsRecommendations(YandexMusicObject):
|
||||
def __init__(self,
|
||||
tracks: List['Track'],
|
||||
batch_id: str = None,
|
||||
client: Optional['Client'] = None,
|
||||
**kwargs) -> None:
|
||||
super().handle_unknown_kwargs(self, **kwargs)
|
||||
|
||||
self.batchId = batch_id
|
||||
self.tracks = tracks
|
||||
|
||||
self.client = client
|
||||
self._id_attrs = (self.batchId, self.tracks)
|
||||
|
||||
@classmethod
|
||||
def de_json(cls, data: dict, client: 'Client') -> Optional['PlaylistsRecommendations']:
|
||||
if not data:
|
||||
return None
|
||||
|
||||
data = super(PlaylistsRecommendations, cls).de_json(data, client)
|
||||
from yandex_music import Track
|
||||
data['tracks'] = Track.de_list(data.get('tracks'), client)
|
||||
|
||||
return cls(client=client, **data)
|
読み込み中…
新しいイシューから参照