Добавлено поле playlists классу BriefInfo

このコミットが含まれているのは:
Il`ya Semyonov 2020-04-16 23:57:23 +03:00
コミット 12b95c19e0
2個のファイルの変更28行の追加19行の削除

ファイルの表示

@ -4,8 +4,8 @@ from yandex_music import BriefInfo
@pytest.fixture(scope='class')
def brief_info(artist, track, album, cover, playlist_id, video, chart, vinyl):
return BriefInfo(artist, [album], [album], TestBriefInfo.last_release_ids, [track], [artist], [cover],
def brief_info(artist, track, album, playlist, cover, playlist_id, video, chart, vinyl):
return BriefInfo(artist, [album], [playlist], [album], TestBriefInfo.last_release_ids, [track], [artist], [cover],
TestBriefInfo.concerts, [video], [vinyl], TestBriefInfo.has_promotions, [playlist_id], [chart])
@ -14,9 +14,10 @@ class TestBriefInfo:
concerts = None
has_promotions = False
def test_expected_values(self, brief_info, artist, track, album, cover, playlist_id, video, chart, vinyl):
def test_expected_values(self, brief_info, artist, track, album, playlist, cover, playlist_id, video, chart, vinyl):
assert brief_info.artist == artist
assert brief_info.albums == [album]
assert brief_info.playlists == [playlist]
assert brief_info.also_albums == [album]
assert brief_info.last_release_ids == self.last_release_ids
assert brief_info.popular_tracks == [track]
@ -32,16 +33,17 @@ class TestBriefInfo:
def test_de_json_none(self, client):
assert BriefInfo.de_json({}, client) is None
def test_de_json_required(self, client, artist, track, album, cover, playlist_id, video, vinyl):
def test_de_json_required(self, client, artist, track, album, playlist, cover, playlist_id, video, vinyl):
json_dict = {'artist': artist.to_dict(), 'albums': [album.to_dict()], 'also_albums': [album.to_dict()],
'last_release_ids': self.last_release_ids, 'popular_tracks': [track.to_dict()],
'similar_artists': [artist.to_dict()], 'all_covers': [cover.to_dict()], 'concerts': self.concerts,
'videos': [video.to_dict()], 'vinyls': [vinyl.to_dict()], 'has_promotions': self.has_promotions,
'playlist_ids': [playlist_id.to_dict()]}
'playlist_ids': [playlist_id.to_dict()], 'playlists': [playlist.to_dict()]}
brief_info = BriefInfo.de_json(json_dict, client)
assert brief_info.artist == artist
assert brief_info.albums == [album]
assert brief_info.playlists == [playlist]
assert brief_info.also_albums == [album]
assert brief_info.last_release_ids == self.last_release_ids
assert brief_info.popular_tracks == [track]
@ -53,16 +55,18 @@ class TestBriefInfo:
assert brief_info.has_promotions == self.has_promotions
assert brief_info.playlist_ids == [playlist_id]
def test_de_json_all(self, client, artist, track, album, cover, playlist_id, video, chart, vinyl):
def test_de_json_all(self, client, artist, track, album, playlist, cover, playlist_id, video, chart, vinyl):
json_dict = {'artist': artist.to_dict(), 'albums': [album.to_dict()], 'also_albums': [album.to_dict()],
'last_release_ids': self.last_release_ids, 'popular_tracks': [track.to_dict()],
'similar_artists': [artist.to_dict()], 'all_covers': [cover.to_dict()], 'concerts': self.concerts,
'videos': [video.to_dict()], 'vinyls': [vinyl.to_dict()], 'has_promotions': self.has_promotions,
'playlist_ids': [playlist_id.to_dict()], 'tracks_in_chart': [chart.to_dict()]}
'playlist_ids': [playlist_id.to_dict()], 'tracks_in_chart': [chart.to_dict()],
'playlists': [playlist.to_dict()]}
brief_info = BriefInfo.de_json(json_dict, client)
assert brief_info.artist == artist
assert brief_info.albums == [album]
assert brief_info.playlists == [playlist]
assert brief_info.also_albums == [album]
assert brief_info.last_release_ids == self.last_release_ids
assert brief_info.popular_tracks == [track]
@ -75,15 +79,15 @@ class TestBriefInfo:
assert brief_info.playlist_ids == [playlist_id]
assert brief_info.tracks_in_chart == [chart]
def test_equality(self, artist, track, album, cover, playlist_id, video, vinyl):
a = BriefInfo(artist, [album], [album], self.last_release_ids, [track], [artist], [cover], self.concerts,
[video], [vinyl], self.has_promotions, [playlist_id])
b = BriefInfo(artist, [album], [album], self.last_release_ids, [], [artist], [cover], self.concerts,
def test_equality(self, artist, track, album, playlist, cover, playlist_id, video, vinyl):
a = BriefInfo(artist, [album], [playlist], [album], self.last_release_ids, [track], [artist], [cover],
self.concerts, [video], [vinyl], self.has_promotions, [playlist_id])
b = BriefInfo(artist, [album], [], [album], self.last_release_ids, [], [artist], [cover], self.concerts,
[video], [vinyl], True, [playlist_id])
c = BriefInfo(artist, [album], [album], [1, 2, 3], [track], [artist], [], self.concerts,
[video], [vinyl], self.has_promotions, [playlist_id])
d = BriefInfo(artist, [album], [album], self.last_release_ids, [track], [artist], [cover], self.concerts,
c = BriefInfo(artist, [album], [playlist], [album], [1, 2, 3], [track], [artist], [], self.concerts,
[video], [vinyl], self.has_promotions, [playlist_id])
d = BriefInfo(artist, [album], [playlist], [album], self.last_release_ids, [track], [artist], [cover],
self.concerts, [video], [vinyl], self.has_promotions, [playlist_id])
assert a != b != c
assert hash(a) != hash(b) != hash(c)

ファイルの表示

@ -3,7 +3,7 @@ from typing import TYPE_CHECKING, Optional, List
from yandex_music import YandexMusicObject
if TYPE_CHECKING:
from yandex_music import Client, Artist, Track, Album, Cover, PlaylistId, Video, Chart, Vinyl
from yandex_music import Client, Artist, Track, Album, Cover, PlaylistId, Video, Chart, Vinyl, Playlist
class BriefInfo(YandexMusicObject):
@ -12,6 +12,7 @@ class BriefInfo(YandexMusicObject):
Attributes:
artist (:obj:`yandex_music.Artist` | :obj:`None`): Артист.
albums (:obj:`list` из :obj:`yandex_music.Album`): Альбомы.
playlists (:obj:`list` из :obj:`yandex_music.Playlist`): Плейлисты.
also_albums (:obj:`list` из :obj:`yandex_music.Album`): Сборники.
last_release_ids (:obj:`list` из :obj:`int`): Уникальные идентификаторы последних выпущенных треков.
popular_tracks (:obj:`list` из :obj:`yandex_music.Track`): Популярные треки.
@ -28,6 +29,7 @@ class BriefInfo(YandexMusicObject):
Args:
artist (:obj:`yandex_music.Artist` | :obj:`None`): Артист.
albums (:obj:`list` из :obj:`yandex_music.Album`): Альбомы.
playlists (:obj:`list` из :obj:`yandex_music.Playlist`): Плейлисты.
also_albums (:obj:`list` из :obj:`yandex_music.Album`): Сборники.
last_release_ids (:obj:`list` из :obj:`int`): Уникальные идентификаторы последних выпущенных треков.
popular_tracks (:obj:`list` из :obj:`yandex_music.Track`): Популярные треки.
@ -46,6 +48,7 @@ class BriefInfo(YandexMusicObject):
def __init__(self,
artist: Optional['Artist'],
albums: List['Album'],
playlists: List['Playlist'],
also_albums: List['Album'],
last_release_ids: List[int],
popular_tracks: List['Track'],
@ -63,6 +66,7 @@ class BriefInfo(YandexMusicObject):
self.artist = artist
self.albums = albums
self.playlists = playlists
self.also_albums = also_albums
self.last_release_ids = last_release_ids
self.popular_tracks = popular_tracks
@ -77,9 +81,9 @@ class BriefInfo(YandexMusicObject):
self.tracks_in_chart = tracks_in_chart
self.client = client
self._id_attrs = (self.artist, self.albums, self.also_albums, self.last_release_ids, self.popular_tracks,
self.similar_artists, self.all_covers, self.concerts, self.videos, self.vinyls,
self.has_promotions, self.playlist_ids)
self._id_attrs = (self.artist, self.albums, self.playlists, self.also_albums, self.last_release_ids,
self.popular_tracks, self.similar_artists, self.all_covers, self.concerts, self.videos,
self.vinyls, self.has_promotions, self.playlist_ids)
@classmethod
def de_json(cls, data: dict, client: 'Client') -> Optional['BriefInfo']:
@ -96,7 +100,8 @@ class BriefInfo(YandexMusicObject):
return None
data = super(BriefInfo, cls).de_json(data, client)
from yandex_music import Artist, Track, Album, Cover, PlaylistId, Video, Chart, Vinyl
from yandex_music import Artist, Track, Album, Cover, PlaylistId, Video, Chart, Vinyl, Playlist
data['playlists'] = Playlist.de_list(data.get('playlists'), client)
data['artist'] = Artist.de_json(data.get('artist'), client)
data['similar_artists'] = Artist.de_list(data.get('similar_artists'), client)
data['popular_tracks'] = Track.de_list(data.get('popular_tracks'), client)