PlaylistsRecommendations -> PlaylistRecommendations
このコミットが含まれているのは:
コミット
de412a4a9f
|
@ -0,0 +1,7 @@
|
|||
yandex_music.PlaylistRecommendations
|
||||
=================
|
||||
|
||||
.. autoclass:: yandex_music.PlaylistRecommendations
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
|
@ -10,3 +10,4 @@
|
|||
yandex_music.playlist.playlist
|
||||
yandex_music.playlist.case_forms
|
||||
yandex_music.playlist.playlist_id
|
||||
yandex_music.playlist.playlist_recommendations
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
yandex_music.PlaylistsRecommendations
|
||||
=================
|
||||
|
||||
.. autoclass:: yandex_music.PlaylistsRecommendations
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
|
@ -0,0 +1,43 @@
|
|||
import pytest
|
||||
|
||||
from yandex_music import PlaylistRecommendations
|
||||
|
||||
|
||||
@pytest.fixture(scope='class')
|
||||
def playlist_recommendations(track):
|
||||
return PlaylistRecommendations([track], TestPlaylistRecommendations.batch_id)
|
||||
|
||||
|
||||
class TestPlaylistRecommendations:
|
||||
batch_id = '1588835234913188-6341822935848536902'
|
||||
|
||||
def test_expected_values(self, playlist_recommendations, track):
|
||||
assert playlist_recommendations.batch_id == self.batch_id
|
||||
assert playlist_recommendations.tracks == [track]
|
||||
|
||||
def test_de_json_none(self, client):
|
||||
assert PlaylistRecommendations.de_json({}, client) is None
|
||||
|
||||
def test_de_json_required(self, client, track):
|
||||
json_dict = {'tracks': [track.to_dict()]}
|
||||
playlist_recommendations = PlaylistRecommendations.de_json(json_dict, client)
|
||||
|
||||
assert playlist_recommendations.tracks == [track]
|
||||
|
||||
def test_de_json_all(self, client, track):
|
||||
json_dict = {'batch_id': self.batch_id, 'tracks': [track.to_dict()]}
|
||||
playlist_recommendations = PlaylistRecommendations.de_json(json_dict, client)
|
||||
|
||||
assert playlist_recommendations.batch_id == self.batch_id
|
||||
assert playlist_recommendations.tracks == [track]
|
||||
|
||||
def test_equality(self, track):
|
||||
a = PlaylistRecommendations([track])
|
||||
b = PlaylistRecommendations([])
|
||||
c = PlaylistRecommendations([track])
|
||||
|
||||
assert a != b
|
||||
assert hash(a) != hash(b)
|
||||
assert a is not b
|
||||
|
||||
assert a == c
|
|
@ -1,43 +0,0 @@
|
|||
import pytest
|
||||
|
||||
from yandex_music import PlaylistsRecommendations
|
||||
|
||||
|
||||
@pytest.fixture(scope='class')
|
||||
def playlists_recommendations(track):
|
||||
return PlaylistsRecommendations([track], TestPlaylistsRecommendations.batch_id)
|
||||
|
||||
|
||||
class TestPlaylistsRecommendations:
|
||||
batch_id = '1588835234913188-6341822935848536902'
|
||||
|
||||
def test_expected_values(self, playlists_recommendations, track):
|
||||
assert playlists_recommendations.batch_id == self.batch_id
|
||||
assert playlists_recommendations.tracks == [track]
|
||||
|
||||
def test_de_json_none(self, client):
|
||||
assert PlaylistsRecommendations.de_json({}, client) is None
|
||||
|
||||
def test_de_json_required(self, client, track):
|
||||
json_dict = {'tracks': [track.to_dict()]}
|
||||
playlists_recommendations = PlaylistsRecommendations.de_json(json_dict, client)
|
||||
|
||||
assert playlists_recommendations.tracks == [track]
|
||||
|
||||
def test_de_json_all(self, client, track):
|
||||
json_dict = {'batch_id': self.batch_id, 'tracks': [track.to_dict()]}
|
||||
playlists_recommendations = PlaylistsRecommendations.de_json(json_dict, client)
|
||||
|
||||
assert playlists_recommendations.batch_id == self.batch_id
|
||||
assert playlists_recommendations.tracks == [track]
|
||||
|
||||
def test_equality(self, track):
|
||||
a = PlaylistsRecommendations([track])
|
||||
b = PlaylistsRecommendations([])
|
||||
c = PlaylistsRecommendations([track])
|
||||
|
||||
assert a != b
|
||||
assert hash(a) != hash(b)
|
||||
assert a is not b
|
||||
|
||||
assert a == c
|
|
@ -36,7 +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 .playlist.playlist_recommendation import PlaylistRecommendations
|
||||
|
||||
from .shot.shot_type import ShotType
|
||||
from .shot.shot_data import ShotData
|
||||
|
@ -120,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', 'PlaylistsRecommendations']
|
||||
'ShotType', 'ShotData', 'SimilarTracks', 'UserSettings', 'RenewableRemainder', 'PlaylistRecommendations']
|
||||
|
|
|
@ -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, PlaylistsRecommendations
|
||||
YandexMusicObject, PlaylistRecommendations
|
||||
from yandex_music.exceptions import Captcha, InvalidToken
|
||||
from yandex_music.utils.difference import Difference
|
||||
from yandex_music.utils.request import Request
|
||||
|
@ -789,7 +789,7 @@ class Client(YandexMusicObject):
|
|||
|
||||
result = self._request.get(url, timeout=timeout, *args, **kwargs)
|
||||
|
||||
return PlaylistsRecommendations.de_json(result, self)
|
||||
return PlaylistRecommendations.de_json(result, self)
|
||||
|
||||
@log
|
||||
def users_playlists_create(self, title: str, visibility: str = 'public', user_id: Union[str, int] = None,
|
||||
|
|
|
@ -3,7 +3,8 @@ from typing import TYPE_CHECKING, Optional, List
|
|||
from yandex_music import YandexMusicObject
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from yandex_music import Client, User, Cover, MadeFor, TrackShort, PlaylistAbsence, PlayCounter
|
||||
from yandex_music import Client, User, Cover, MadeFor, TrackShort, PlaylistAbsence, PlayCounter,\
|
||||
PlaylistRecommendations
|
||||
|
||||
|
||||
class Playlist(YandexMusicObject):
|
||||
|
@ -168,6 +169,13 @@ class Playlist(YandexMusicObject):
|
|||
def playlist_id(self) -> str:
|
||||
return f'{self.owner.uid}:{self.kind}'
|
||||
|
||||
def get_recommendations(self, *args, **kwargs) -> Optional['PlaylistRecommendations']:
|
||||
"""Сокращение для::
|
||||
|
||||
client.users_playlists_recommendations(playlist.kind, playlist.owner.uid, *args, **kwargs)
|
||||
"""
|
||||
return self.client.users_playlists_recommendations(self.kind, self.owner.uid, *args, **kwargs)
|
||||
|
||||
def download_animated_cover(self, filename: str, size: str = '200x200') -> None:
|
||||
"""Загрузка анимированной обложки.
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ if TYPE_CHECKING:
|
|||
from yandex_music import Client, Track
|
||||
|
||||
|
||||
class PlaylistsRecommendations(YandexMusicObject):
|
||||
class PlaylistRecommendations(YandexMusicObject):
|
||||
"""Класс, представляющий рекомендации для плейлиста.
|
||||
|
||||
Attributes:
|
||||
|
@ -35,7 +35,7 @@ class PlaylistsRecommendations(YandexMusicObject):
|
|||
self._id_attrs = (self.batch_id, self.tracks)
|
||||
|
||||
@classmethod
|
||||
def de_json(cls, data: dict, client: 'Client') -> Optional['PlaylistsRecommendations']:
|
||||
def de_json(cls, data: dict, client: 'Client') -> Optional['PlaylistRecommendations']:
|
||||
"""Десериализация объекта.
|
||||
|
||||
Args:
|
||||
|
@ -48,7 +48,7 @@ class PlaylistsRecommendations(YandexMusicObject):
|
|||
if not data:
|
||||
return None
|
||||
|
||||
data = super(PlaylistsRecommendations, cls).de_json(data, client)
|
||||
data = super(PlaylistRecommendations, cls).de_json(data, client)
|
||||
from yandex_music import Track
|
||||
data['tracks'] = Track.de_list(data.get('tracks'), client)
|
||||
|
読み込み中…
新しいイシューから参照