Добавлено поле best классу Track
このコミットが含まれているのは:
コミット
a06401b4a0
|
@ -50,12 +50,12 @@ def track_factory(major, normalization):
|
||||||
class TrackFactory:
|
class TrackFactory:
|
||||||
def get(self, artists, albums):
|
def get(self, artists, albums):
|
||||||
return Track(TestTrack.id, TestTrack.title, TestTrack.available, artists, albums,
|
return Track(TestTrack.id, TestTrack.title, TestTrack.available, artists, albums,
|
||||||
TestTrack.available_for_premium_users, TestTrack.lyrics_available, TestTrack.real_id,
|
TestTrack.available_for_premium_users, TestTrack.lyrics_available, TestTrack.best,
|
||||||
TestTrack.og_image, TestTrack.type, TestTrack.cover_uri, major, TestTrack.duration_ms,
|
TestTrack.real_id, TestTrack.og_image, TestTrack.type, TestTrack.cover_uri, major,
|
||||||
TestTrack.storage_dir, TestTrack.file_size, normalization, TestTrack.error, TestTrack.regions,
|
TestTrack.duration_ms, TestTrack.storage_dir, TestTrack.file_size, normalization,
|
||||||
TestTrack.available_as_rbt, TestTrack.content_warning, TestTrack.explicit,
|
TestTrack.error, TestTrack.regions, TestTrack.available_as_rbt, TestTrack.content_warning,
|
||||||
TestTrack.preview_duration_ms, TestTrack.available_full_without_permission, TestTrack.version,
|
TestTrack.explicit, TestTrack.preview_duration_ms, TestTrack.available_full_without_permission,
|
||||||
TestTrack.remember_position)
|
TestTrack.version, TestTrack.remember_position)
|
||||||
|
|
||||||
return TrackFactory()
|
return TrackFactory()
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ class TestTrack:
|
||||||
available = True
|
available = True
|
||||||
available_for_premium_users = True
|
available_for_premium_users = True
|
||||||
lyrics_available = False
|
lyrics_available = False
|
||||||
|
best = False
|
||||||
real_id = '10994777'
|
real_id = '10994777'
|
||||||
og_image = 'avatars.yandex.net/get-music-content/28589/daef4251.a.1193829-1/%%'
|
og_image = 'avatars.yandex.net/get-music-content/28589/daef4251.a.1193829-1/%%'
|
||||||
type = 'music'
|
type = 'music'
|
||||||
|
@ -32,6 +33,7 @@ class TestTrack:
|
||||||
assert track.artists == [artist]
|
assert track.artists == [artist]
|
||||||
assert track.albums == [album]
|
assert track.albums == [album]
|
||||||
assert track.lyrics_available == self.lyrics_available
|
assert track.lyrics_available == self.lyrics_available
|
||||||
|
assert track.best == self.best
|
||||||
assert track.real_id == self.real_id
|
assert track.real_id == self.real_id
|
||||||
assert track.og_image == self.og_image
|
assert track.og_image == self.og_image
|
||||||
assert track.type == self.type
|
assert track.type == self.type
|
||||||
|
@ -58,21 +60,16 @@ class TestTrack:
|
||||||
assert Track.de_list({}, client) == []
|
assert Track.de_list({}, client) == []
|
||||||
|
|
||||||
def test_de_json_required(self, client, artist, album):
|
def test_de_json_required(self, client, artist, album):
|
||||||
json_dict = {'id_': self.id, 'title': self.title, 'available': self.available,
|
json_dict = {'id_': self.id}
|
||||||
'artists': [artist.to_dict()], 'albums': [album.to_dict()]}
|
|
||||||
track = Track.de_json(json_dict, client)
|
track = Track.de_json(json_dict, client)
|
||||||
|
|
||||||
assert track.id == self.id
|
assert track.id == self.id
|
||||||
assert track.title == self.title
|
|
||||||
assert track.available == self.available
|
|
||||||
assert track.artists == [artist]
|
|
||||||
assert track.albums == [album]
|
|
||||||
|
|
||||||
def test_de_json_all(self, client, artist, album, major, normalization):
|
def test_de_json_all(self, client, artist, album, major, normalization):
|
||||||
json_dict = {'id_': self.id, 'title': self.title, 'available': self.available,
|
json_dict = {'id_': self.id, 'title': self.title, 'available': self.available,
|
||||||
'available_for_premium_users': self.available_for_premium_users,
|
'available_for_premium_users': self.available_for_premium_users,
|
||||||
'artists': [artist.to_dict()], 'albums': [album.to_dict()],
|
'artists': [artist.to_dict()], 'albums': [album.to_dict()],
|
||||||
'lyrics_available': self.lyrics_available, 'real_id': self.real_id,
|
'lyrics_available': self.lyrics_available, 'best': self.best, 'real_id': self.real_id,
|
||||||
'og_image': self.og_image, 'type_': self.type, 'cover_uri': self.cover_uri,
|
'og_image': self.og_image, 'type_': self.type, 'cover_uri': self.cover_uri,
|
||||||
'major': major.to_dict(), 'duration_ms': self.duration_ms, 'storage_dir': self.storage_dir,
|
'major': major.to_dict(), 'duration_ms': self.duration_ms, 'storage_dir': self.storage_dir,
|
||||||
'file_size': self.file_size, 'normalization': normalization.to_dict(), 'error': self.error,
|
'file_size': self.file_size, 'normalization': normalization.to_dict(), 'error': self.error,
|
||||||
|
@ -90,6 +87,7 @@ class TestTrack:
|
||||||
assert track.artists == [artist]
|
assert track.artists == [artist]
|
||||||
assert track.albums == [album]
|
assert track.albums == [album]
|
||||||
assert track.lyrics_available == self.lyrics_available
|
assert track.lyrics_available == self.lyrics_available
|
||||||
|
assert track.best == self.best
|
||||||
assert track.real_id == self.real_id
|
assert track.real_id == self.real_id
|
||||||
assert track.og_image == self.og_image
|
assert track.og_image == self.og_image
|
||||||
assert track.type == self.type
|
assert track.type == self.type
|
||||||
|
@ -109,10 +107,10 @@ class TestTrack:
|
||||||
assert track.version == self.version
|
assert track.version == self.version
|
||||||
assert track.remember_position == self.remember_position
|
assert track.remember_position == self.remember_position
|
||||||
|
|
||||||
def test_equality(self, artist, album):
|
def test_equality(self):
|
||||||
a = Track(self.id, self.title, self.available, [artist], [album])
|
a = Track(self.id)
|
||||||
b = Track(self.id, '', self.available, [artist], [])
|
b = Track(10)
|
||||||
c = Track(self.id, self.title, self.available, [artist], [album])
|
c = Track(self.id)
|
||||||
|
|
||||||
assert a != b
|
assert a != b
|
||||||
assert hash(a) != hash(b)
|
assert hash(a) != hash(b)
|
||||||
|
|
|
@ -23,6 +23,7 @@ class Track(YandexMusicObject):
|
||||||
albums (:obj:`list` из :obj:`yandex_music.Album`): Альбомы.
|
albums (:obj:`list` из :obj:`yandex_music.Album`): Альбомы.
|
||||||
available_for_premium_users (:obj:`bool`): Доступен ли для пользователей с подпиской.
|
available_for_premium_users (:obj:`bool`): Доступен ли для пользователей с подпиской.
|
||||||
lyrics_available (:obj:`bool`): Доступен ли текст песни.
|
lyrics_available (:obj:`bool`): Доступен ли текст песни.
|
||||||
|
best (:obj:`bool`): Лучшей ли трек TODO.
|
||||||
real_id (:obj:`int` | :obj:`str`): TODO.
|
real_id (:obj:`int` | :obj:`str`): TODO.
|
||||||
og_image (:obj:`str`): Ссылка на превью Open Graph.
|
og_image (:obj:`str`): Ссылка на превью Open Graph.
|
||||||
type (:obj:`str`): Тип.
|
type (:obj:`str`): Тип.
|
||||||
|
@ -52,6 +53,7 @@ class Track(YandexMusicObject):
|
||||||
albums (:obj:`list` из :obj:`yandex_music.Album`, optional): Альбомы.
|
albums (:obj:`list` из :obj:`yandex_music.Album`, optional): Альбомы.
|
||||||
available_for_premium_users (:obj:`bool`, optional): Доступен ли для пользователей с подпиской.
|
available_for_premium_users (:obj:`bool`, optional): Доступен ли для пользователей с подпиской.
|
||||||
lyrics_available (:obj:`bool`, optional): Доступен ли текст песни.
|
lyrics_available (:obj:`bool`, optional): Доступен ли текст песни.
|
||||||
|
best (:obj:`bool`, optional): Лучшей ли трек TODO.
|
||||||
real_id (:obj:`int` | :obj:`str`, optional): TODO.
|
real_id (:obj:`int` | :obj:`str`, optional): TODO.
|
||||||
og_image (:obj:`str`, optional): Ссылка на превью Open Graph.
|
og_image (:obj:`str`, optional): Ссылка на превью Open Graph.
|
||||||
type_ (:obj:`str`, optional): Тип.
|
type_ (:obj:`str`, optional): Тип.
|
||||||
|
@ -82,6 +84,7 @@ class Track(YandexMusicObject):
|
||||||
albums: List['Album'] = None,
|
albums: List['Album'] = None,
|
||||||
available_for_premium_users: Optional[bool] = None,
|
available_for_premium_users: Optional[bool] = None,
|
||||||
lyrics_available: Optional[bool] = None,
|
lyrics_available: Optional[bool] = None,
|
||||||
|
best: Optional[bool] = None,
|
||||||
real_id: Optional[Union[str, int]] = None,
|
real_id: Optional[Union[str, int]] = None,
|
||||||
og_image: Optional[str] = None,
|
og_image: Optional[str] = None,
|
||||||
type_: Optional[str] = None,
|
type_: Optional[str] = None,
|
||||||
|
@ -105,13 +108,14 @@ class Track(YandexMusicObject):
|
||||||
super().handle_unknown_kwargs(self, **kwargs)
|
super().handle_unknown_kwargs(self, **kwargs)
|
||||||
|
|
||||||
self.id = id_
|
self.id = id_
|
||||||
|
|
||||||
self.title = title
|
self.title = title
|
||||||
self.available = available
|
self.available = available
|
||||||
self.artists = artists
|
self.artists = artists
|
||||||
self.albums = albums
|
self.albums = albums
|
||||||
|
|
||||||
self.available_for_premium_users = available_for_premium_users
|
self.available_for_premium_users = available_for_premium_users
|
||||||
self.lyrics_available = lyrics_available
|
self.lyrics_available = lyrics_available
|
||||||
|
self.best = best
|
||||||
self.real_id = real_id
|
self.real_id = real_id
|
||||||
self.og_image = og_image
|
self.og_image = og_image
|
||||||
self.type = type_
|
self.type = type_
|
||||||
|
@ -134,7 +138,7 @@ class Track(YandexMusicObject):
|
||||||
self.download_info = None
|
self.download_info = None
|
||||||
|
|
||||||
self.client = client
|
self.client = client
|
||||||
self._id_attrs = (self.id, self.title, self.available, self.artists, self.albums)
|
self._id_attrs = (self.id,)
|
||||||
|
|
||||||
def get_download_info(self, get_direct_links=False) -> List['DownloadInfo']:
|
def get_download_info(self, get_direct_links=False) -> List['DownloadInfo']:
|
||||||
"""Сокращение для::
|
"""Сокращение для::
|
||||||
|
|
読み込み中…
新しいイシューから参照