From bbf7ad23702d42e6de2bdd8f6153533e91eb635d Mon Sep 17 00:00:00 2001 From: Gleb Liutsko Date: Tue, 19 Nov 2019 21:00:58 +0400 Subject: [PATCH 1/7] =?UTF-8?q?=D0=9A=D0=BB=D0=B0=D1=81=D1=81=20Pager=20?= =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=BC=D0=B5=D1=89=D0=B5=D0=BD=20=D0=B2?= =?UTF-8?q?=20=D0=BA=D0=BE=D1=80=D0=B5=D0=BD=D1=8C=20=D0=B1=D0=B8=D0=B1?= =?UTF-8?q?=D0=BB=D0=B8=D0=BE=D1=82=D0=B5=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yandex_music/__init__.py | 2 +- yandex_music/{artist => }/pager.py | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename yandex_music/{artist => }/pager.py (100%) diff --git a/yandex_music/__init__.py b/yandex_music/__init__.py index f216bcb..db46aab 100644 --- a/yandex_music/__init__.py +++ b/yandex_music/__init__.py @@ -23,7 +23,6 @@ from .artist.brief_info import BriefInfo from .artist.counts import Counts from .artist.description import Description from .artist.link import Link -from .artist.pager import Pager from .artist.ratings import Ratings from .artist.vinyl import Vinyl @@ -94,6 +93,7 @@ from .supplement.supplement import Supplement from .supplement.lyrics import Lyrics from .supplement.video_supplement import VideoSupplement +from .pager import Pager from .cover import Cover from .experiments import Experiments from .invocation_info import InvocationInfo diff --git a/yandex_music/artist/pager.py b/yandex_music/pager.py similarity index 100% rename from yandex_music/artist/pager.py rename to yandex_music/pager.py From 5bd1ad4c56a992ff542f21625032db38111bd525 Mon Sep 17 00:00:00 2001 From: Gleb Liutsko Date: Tue, 19 Nov 2019 21:30:07 +0400 Subject: [PATCH 2/7] =?UTF-8?q?=D0=9F=D0=BE=D0=BB=D1=83=D1=87=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B2=D1=81=D0=B5=D1=85=20=D0=B0=D0=BB=D1=8C?= =?UTF-8?q?=D0=B1=D0=BE=D0=BC=D0=BE=D0=B2=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB?= =?UTF-8?q?=D0=BD=D0=B8=D1=82=D0=B5=D0=BB=D1=8F=20=D0=94=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=20Art?= =?UTF-8?q?istAlbums=20=D0=92=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=20Client=20?= =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=20=D0=BC=D0=B5?= =?UTF-8?q?=D1=82=D0=BE=D0=B4=20artists=5Falbums?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yandex_music/__init__.py | 1 + yandex_music/artist/artist.py | 5 +++++ yandex_music/artist/artist_albums.py | 26 ++++++++++++++++++++++++++ yandex_music/client.py | 19 ++++++++++++++++++- 4 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 yandex_music/artist/artist_albums.py diff --git a/yandex_music/__init__.py b/yandex_music/__init__.py index db46aab..bd45357 100644 --- a/yandex_music/__init__.py +++ b/yandex_music/__init__.py @@ -19,6 +19,7 @@ from .album.label import Label from .album.track_position import TrackPosition from .artist.artist import Artist from .artist.artist_tracks import ArtistTracks +from .artist.artist_albums import ArtistAlbums from .artist.brief_info import BriefInfo from .artist.counts import Counts from .artist.description import Description diff --git a/yandex_music/artist/artist.py b/yandex_music/artist/artist.py index 53ffe1d..3ac8ac6 100644 --- a/yandex_music/artist/artist.py +++ b/yandex_music/artist/artist.py @@ -95,6 +95,9 @@ class Artist(YandexMusicObject): """ return self.client.artists_tracks(self.id, page, page_size, *args, **kwargs) + def get_albums(self, page=0, page_size=20, sort_by='year', *args, **kwargs): + return self.client.artists_albums(self.id, page, page_size, sort_by, *args, **kwargs) + @classmethod def de_json(cls, data, client): if not data: @@ -129,3 +132,5 @@ class Artist(YandexMusicObject): downloadOpImage = download_op_image #: Псевдоним для :attr:`get_tracks` getTracks = get_tracks + #: Псевдоним для :attr:`get_albums` + getAlbums = get_albums diff --git a/yandex_music/artist/artist_albums.py b/yandex_music/artist/artist_albums.py new file mode 100644 index 0000000..dcffdfe --- /dev/null +++ b/yandex_music/artist/artist_albums.py @@ -0,0 +1,26 @@ +from yandex_music import YandexMusicObject + + +class ArtistAlbums(YandexMusicObject): + def __init__(self, + albums, + pager, + client=None, + **kwargs): + self.albums = albums + self.pager = pager + + self.client = client + self._id_attrs = (self.pager, self.albums) + + @classmethod + def de_json(cls, data, client): + if not data: + return None + + data = super(ArtistAlbums, cls).de_json(data, client) + from yandex_music import Album, Pager + data['albums'] = Album.de_list(data.get('albums'), client) + data['pager'] = Pager.de_json(data.get('pager'), client) + + return cls(client=client, **data) diff --git a/yandex_music/client.py b/yandex_music/client.py index 8d0f9b4..e54e405 100644 --- a/yandex_music/client.py +++ b/yandex_music/client.py @@ -4,7 +4,8 @@ from datetime import datetime 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 + Suggestions, Landing, Genre, Dashboard, StationResult, StationTracksResult, BriefInfo, Supplement, ArtistTracks, \ + ArtistAlbums from yandex_music.utils.request import Request from yandex_music.utils.difference import Difference from yandex_music.exceptions import InvalidToken @@ -920,6 +921,20 @@ class Client(YandexMusicObject): return ArtistTracks.de_json(result, self) + @log + def artists_albums(self, artist_id: str or int, page=0, page_size=20, sort_by='year', timeout=None, *args, **kwargs): + url = f'{self.base_url}/artists/{artist_id}/direct-albums' + + params = { + 'sort-by': sort_by, + 'page': page, + 'page-size': page_size + } + + result = self._request.get(url, params, timeout=timeout, *args, **kwargs) + + return ArtistAlbums.de_json(result, self) + def _like_action(self, object_type: str, ids: str or int or list, remove: bool = False, user_id: str or int = None, timeout=None, *args, **kwargs): if user_id is None: @@ -1140,6 +1155,8 @@ class Client(YandexMusicObject): artistsBriefInfo = artists_brief_info #: Псевдоним для :attr:`artists_tracks` artistsTracks = artists_tracks + #: Псевдоним для :attr:`artists_albums` + artistsAlbums = artists_albums #: Псевдоним для :attr:`users_likes_tracks_add` usersLikesTracksAdd = users_likes_tracks_add #: Псевдоним для :attr:`users_likes_tracks_remove` From be3152a7eed5157eb449ec817506b0335a3ddffb Mon Sep 17 00:00:00 2001 From: Gleb Liutsko Date: Tue, 19 Nov 2019 21:52:17 +0400 Subject: [PATCH 3/7] =?UTF-8?q?=D0=94=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D1=82=D0=B0=D1=86=D0=B8=D1=8F=20=D0=97=D0=B0=D0=B4=D0=BE=D0=BA?= =?UTF-8?q?=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0?= =?UTF-8?q?=D0=BD=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=20ArtistAlbums=20=D0=97?= =?UTF-8?q?=D0=B0=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4?= =?UTF-8?q?=20get=5Falbums=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D0=B0=20Artist?= =?UTF-8?q?=20=D0=97=D0=B0=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=20=D0=BC=D0=B5=D1=82=D0=BE?= =?UTF-8?q?=D0=B4=20artists=5Falbums=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81?= =?UTF-8?q?=D0=B0=20Client?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yandex_music/artist/artist.py | 4 ++++ yandex_music/artist/artist_albums.py | 26 ++++++++++++++++++++++++++ yandex_music/client.py | 16 ++++++++++++++++ 3 files changed, 46 insertions(+) diff --git a/yandex_music/artist/artist.py b/yandex_music/artist/artist.py index 3ac8ac6..5e3b838 100644 --- a/yandex_music/artist/artist.py +++ b/yandex_music/artist/artist.py @@ -96,6 +96,10 @@ class Artist(YandexMusicObject): return self.client.artists_tracks(self.id, page, page_size, *args, **kwargs) def get_albums(self, page=0, page_size=20, sort_by='year', *args, **kwargs): + """Сокращение для:: + + client.artists_albums(artist.id, page, page_size, sort_by, *args, **kwargs) + """ return self.client.artists_albums(self.id, page, page_size, sort_by, *args, **kwargs) @classmethod diff --git a/yandex_music/artist/artist_albums.py b/yandex_music/artist/artist_albums.py index dcffdfe..91e2ecb 100644 --- a/yandex_music/artist/artist_albums.py +++ b/yandex_music/artist/artist_albums.py @@ -2,6 +2,22 @@ from yandex_music import YandexMusicObject class ArtistAlbums(YandexMusicObject): + """Класс представляющий страницу списка альбомов артиста. + + Attributes: + albums (:obj:`list` из :obj:`yandex_music.Album`): Список альбомов артиста. + pager (:obj:`yandex_music.Pager`): Объект класса :class:`yandex_music.Pager` представляющий пагинатор. + client (:obj:`yandex_music.Client`): Объект класса :class:`yandex_music.Client` представляющий клиент Yandex + Music. + + Args: + albums (:obj:`list` из :obj:`yandex_music.Album`): Список альбомов артиста. + pager (:obj:`yandex_music.Pager`): Объект класса :class:`yandex_music.Pager` представляющий пагинатор. + client (:obj:`yandex_music.Client`, optional): Объект класса :class:`yandex_music.Client` представляющий клиент Yandex + Music. + **kwargs: Произвольные ключевые аргументы полученные от API. + """ + def __init__(self, albums, pager, @@ -15,6 +31,16 @@ class ArtistAlbums(YandexMusicObject): @classmethod def de_json(cls, data, client): + """Десериализация объекта. + + Args: + data (:obj:`dict`): Поля и значения десериализуемого объекта. + client (:obj:`yandex_music.Client`): Объект класса :class:`yandex_music.Client` представляющий клиент Yandex + Music. + + Returns: + :obj:`yandex_music.ArtistAlbums`: Объект класса :class:`yandex_music.ArtistAlbums`. + """ if not data: return None diff --git a/yandex_music/client.py b/yandex_music/client.py index e54e405..aaabde7 100644 --- a/yandex_music/client.py +++ b/yandex_music/client.py @@ -923,6 +923,22 @@ class Client(YandexMusicObject): @log def artists_albums(self, artist_id: str or int, page=0, page_size=20, sort_by='year', timeout=None, *args, **kwargs): + """Получение треков артиста. + + Args: + artist_id (:obj:`str` | :obj:`int`): Уникальный идентификатор артиста. + page (:obj:`int`, optional): Номер страницы. + page_size (:obj:`int`, optional): Количество треков на странице. + sort_by (:obj:`str`, optional): Параметр для сортирвки. + timeout (:obj:`int` | :obj:`float`, optional): Если это значение указано, используется как время ожидания + ответа от сервера вместо указанного при создании пула. + **kwargs (:obj:`dict`, optional): Произвольные аргументы (будут переданы в запрос). + + Returns: + :obj:`yandex_music.ArtistAlbums`: Объекта класса :class:`yandex_music.ArtistsTracks` + представляющий страницу списка альбомов артиста + """ + url = f'{self.base_url}/artists/{artist_id}/direct-albums' params = { From d51d0b7887618180caaf0f37bbfd4045999a5fb1 Mon Sep 17 00:00:00 2001 From: Gleb Liutsko Date: Tue, 19 Nov 2019 22:10:38 +0400 Subject: [PATCH 4/7] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D1=82=D0=B5=D1=81=D1=82=20=D0=B4=D0=BB=D1=8F=20=D0=BA?= =?UTF-8?q?=D0=BB=D0=B0=D1=81=D1=81=D0=B0=20ArtistAlbums?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/test_artist_albums.py | 39 +++++++++++++++++++++++++++++++++++++ yandex_music/__init__.py | 2 +- 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 tests/test_artist_albums.py diff --git a/tests/test_artist_albums.py b/tests/test_artist_albums.py new file mode 100644 index 0000000..5b86469 --- /dev/null +++ b/tests/test_artist_albums.py @@ -0,0 +1,39 @@ +import pytest + +from yandex_music import ArtistAlbums + + +@pytest.fixture(scope='class') +def artist_albums(album, pager): + return ArtistAlbums([album], pager) + + +class TestArtistAlbums: + def test_expected_values(self, artist_albums, album, pager): + assert artist_albums.albums == [album] + assert artist_albums.pager == pager + + def test_de_json_required(self, client, album, pager): + json_dict = {'albums': [album.to_dict()], 'pager': pager.to_dict()} + artist_albums = ArtistAlbums.de_json(json_dict, client) + + assert artist_albums.albums == [album] + assert artist_albums.pager == pager + + def test_de_json_all(self, client, album, pager): + json_dict = {'albums': [album.to_dict()], 'pager': pager.to_dict()} + artist_albums = ArtistAlbums.de_json(json_dict, client) + + assert artist_albums.albums == [album] + assert artist_albums.pager == pager + + def test_equality(self, album, pager): + a = ArtistAlbums([album], pager) + b = ArtistAlbums([], pager) + c = ArtistAlbums([album], pager) + + assert a != b + assert hash(a) != hash(b) + assert a is not b + + assert a == c diff --git a/yandex_music/__init__.py b/yandex_music/__init__.py index bd45357..a81b5b5 100644 --- a/yandex_music/__init__.py +++ b/yandex_music/__init__.py @@ -113,4 +113,4 @@ __all__ = ['YandexMusicObject', 'Client', 'Account', 'PassportPhone', 'Invocatio 'PersonalPlaylistsData', 'Promotion', 'Landing', 'Chart', 'ChartItem', 'PlayContext', 'Title', 'Genre', 'Icon', 'Images', 'Id', 'Station', 'Dashboard', 'RotorSettings', 'AdParams', 'Restrictions', 'Value', 'Enum', 'DiscreteScale', 'StationResult', 'Sequence', 'StationTracksResult', 'BriefInfo', 'Description', 'PlaylistId', - 'Vinyl', 'Supplement', 'Lyrics', 'VideoSupplement', 'ArtistTracks', 'Pager'] + 'Vinyl', 'Supplement', 'Lyrics', 'VideoSupplement', 'ArtistTracks', 'Pager', 'ArtistAlbums'] From 584741cb632b7d62f68bc85ad1b3ce27617c12d4 Mon Sep 17 00:00:00 2001 From: Gleb Liutsko Date: Tue, 19 Nov 2019 22:33:52 +0400 Subject: [PATCH 5/7] =?UTF-8?q?=D0=9F=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20?= =?UTF-8?q?=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yandex_music/client.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/yandex_music/client.py b/yandex_music/client.py index aaabde7..88723a4 100644 --- a/yandex_music/client.py +++ b/yandex_music/client.py @@ -923,12 +923,12 @@ class Client(YandexMusicObject): @log def artists_albums(self, artist_id: str or int, page=0, page_size=20, sort_by='year', timeout=None, *args, **kwargs): - """Получение треков артиста. + """Получение альбомов артиста. Args: artist_id (:obj:`str` | :obj:`int`): Уникальный идентификатор артиста. page (:obj:`int`, optional): Номер страницы. - page_size (:obj:`int`, optional): Количество треков на странице. + page_size (:obj:`int`, optional): Количество альбомов на странице. sort_by (:obj:`str`, optional): Параметр для сортирвки. timeout (:obj:`int` | :obj:`float`, optional): Если это значение указано, используется как время ожидания ответа от сервера вместо указанного при создании пула. From bc2c054ce01c21b9673e8ba7b9b37625fe41cafd Mon Sep 17 00:00:00 2001 From: Gleb Liutsko Date: Wed, 20 Nov 2019 17:32:54 +0400 Subject: [PATCH 6/7] =?UTF-8?q?=D0=9F=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20?= =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20.rst?= =?UTF-8?q?=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B4=D0=BB=D1=8F=20=D0=B3?= =?UTF-8?q?=D0=B5=D0=BD=D0=B5=D1=80=D0=B0=D1=86=D0=B8=D0=B8=20=D0=B4=D0=BE?= =?UTF-8?q?=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D0=B8=D0=B0=D1=86=D0=B8=D0=B8=20?= =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=BE=20=D0=BD=D0=B0?= =?UTF-8?q?=D0=B7=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BC=D0=B5=D1=82=D0=BE?= =?UTF-8?q?=D0=B4=D0=B0=20artists=5Falbums=20=D0=BD=D0=B0=20artists=5Fdire?= =?UTF-8?q?ct=5Falbums?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/source/yandex_music.artist.artist_albums.rst | 7 +++++++ docs/source/yandex_music.artist.rst | 1 + yandex_music/artist/artist.py | 4 ++-- yandex_music/client.py | 8 ++++---- 4 files changed, 14 insertions(+), 6 deletions(-) create mode 100644 docs/source/yandex_music.artist.artist_albums.rst diff --git a/docs/source/yandex_music.artist.artist_albums.rst b/docs/source/yandex_music.artist.artist_albums.rst new file mode 100644 index 0000000..c734d47 --- /dev/null +++ b/docs/source/yandex_music.artist.artist_albums.rst @@ -0,0 +1,7 @@ +yandex_music.ArtistAlbums +========================= + +.. autoclass:: yandex_music.ArtistAlbums + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/source/yandex_music.artist.rst b/docs/source/yandex_music.artist.rst index 483b4be..63446e8 100644 --- a/docs/source/yandex_music.artist.rst +++ b/docs/source/yandex_music.artist.rst @@ -11,4 +11,5 @@ yandex_music.artist.description yandex_music.artist.brief_info yandex_music.artist.artist_tracks + yandex_music.artist.artist_albums yandex_music.artist.pager diff --git a/yandex_music/artist/artist.py b/yandex_music/artist/artist.py index 5e3b838..852cad2 100644 --- a/yandex_music/artist/artist.py +++ b/yandex_music/artist/artist.py @@ -98,9 +98,9 @@ class Artist(YandexMusicObject): def get_albums(self, page=0, page_size=20, sort_by='year', *args, **kwargs): """Сокращение для:: - client.artists_albums(artist.id, page, page_size, sort_by, *args, **kwargs) + client.artists_direct_albums(artist.id, page, page_size, sort_by, *args, **kwargs) """ - return self.client.artists_albums(self.id, page, page_size, sort_by, *args, **kwargs) + return self.client.artists_direct_albums(self.id, page, page_size, sort_by, *args, **kwargs) @classmethod def de_json(cls, data, client): diff --git a/yandex_music/client.py b/yandex_music/client.py index 88723a4..dbafcdb 100644 --- a/yandex_music/client.py +++ b/yandex_music/client.py @@ -922,7 +922,7 @@ class Client(YandexMusicObject): return ArtistTracks.de_json(result, self) @log - def artists_albums(self, artist_id: str or int, page=0, page_size=20, sort_by='year', timeout=None, *args, **kwargs): + def artists_direct_albums(self, artist_id: str or int, page=0, page_size=20, sort_by='year', timeout=None, *args, **kwargs): """Получение альбомов артиста. Args: @@ -936,7 +936,7 @@ class Client(YandexMusicObject): Returns: :obj:`yandex_music.ArtistAlbums`: Объекта класса :class:`yandex_music.ArtistsTracks` - представляющий страницу списка альбомов артиста + представляющий страницу списка альбомов артиста """ url = f'{self.base_url}/artists/{artist_id}/direct-albums' @@ -1171,8 +1171,8 @@ class Client(YandexMusicObject): artistsBriefInfo = artists_brief_info #: Псевдоним для :attr:`artists_tracks` artistsTracks = artists_tracks - #: Псевдоним для :attr:`artists_albums` - artistsAlbums = artists_albums + #: Псевдоним для :attr:`artists_direct_albums` + artistsDirectAlbums = artists_direct_albums #: Псевдоним для :attr:`users_likes_tracks_add` usersLikesTracksAdd = users_likes_tracks_add #: Псевдоним для :attr:`users_likes_tracks_remove` From 674f15416ae6caa0e2162a64b67c904573f32f0e Mon Sep 17 00:00:00 2001 From: Marshal Date: Wed, 20 Nov 2019 19:13:49 +0300 Subject: [PATCH 7/7] =?UTF-8?q?=D0=9C=D0=B5=D0=BB=D0=BA=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yandex_music/artist/artist_albums.py | 4 ++-- yandex_music/client.py | 18 +++++++++++++----- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/yandex_music/artist/artist_albums.py b/yandex_music/artist/artist_albums.py index 91e2ecb..be6c9c3 100644 --- a/yandex_music/artist/artist_albums.py +++ b/yandex_music/artist/artist_albums.py @@ -13,8 +13,8 @@ class ArtistAlbums(YandexMusicObject): Args: albums (:obj:`list` из :obj:`yandex_music.Album`): Список альбомов артиста. pager (:obj:`yandex_music.Pager`): Объект класса :class:`yandex_music.Pager` представляющий пагинатор. - client (:obj:`yandex_music.Client`, optional): Объект класса :class:`yandex_music.Client` представляющий клиент Yandex - Music. + client (:obj:`yandex_music.Client`, optional): Объект класса :class:`yandex_music.Client` представляющий клиент + Yandex Music. **kwargs: Произвольные ключевые аргументы полученные от API. """ diff --git a/yandex_music/client.py b/yandex_music/client.py index dbafcdb..282cd05 100644 --- a/yandex_music/client.py +++ b/yandex_music/client.py @@ -26,7 +26,6 @@ de_list_likes = { 'playlist': PlaylistsLikes.de_list, } - logging.getLogger(__name__).addHandler(logging.NullHandler()) @@ -907,7 +906,10 @@ class Client(YandexMusicObject): Returns: :obj:`yandex_music.ArtistsTracks`: Объекта класса :class:`yandex_music.ArtistsTracks` - представляющий страницу списка треков артиста + представляющий страницу списка треков артиста, иначе :obj:`None`. + + Raises: + :class:`yandex_music.YandexMusicError` """ url = f'{self.base_url}/artists/{artist_id}/tracks' @@ -922,21 +924,27 @@ class Client(YandexMusicObject): return ArtistTracks.de_json(result, self) @log - def artists_direct_albums(self, artist_id: str or int, page=0, page_size=20, sort_by='year', timeout=None, *args, **kwargs): + def artists_direct_albums(self, artist_id: str or int, page=0, page_size=20, sort_by='year', + timeout=None, *args, **kwargs): """Получение альбомов артиста. + Известные значения для sort_by: year, rating. + Args: artist_id (:obj:`str` | :obj:`int`): Уникальный идентификатор артиста. page (:obj:`int`, optional): Номер страницы. page_size (:obj:`int`, optional): Количество альбомов на странице. - sort_by (:obj:`str`, optional): Параметр для сортирвки. + sort_by (:obj:`str`, optional): Параметр для сортировки. timeout (:obj:`int` | :obj:`float`, optional): Если это значение указано, используется как время ожидания ответа от сервера вместо указанного при создании пула. **kwargs (:obj:`dict`, optional): Произвольные аргументы (будут переданы в запрос). Returns: :obj:`yandex_music.ArtistAlbums`: Объекта класса :class:`yandex_music.ArtistsTracks` - представляющий страницу списка альбомов артиста + представляющий страницу списка альбомов артиста, иначе :obj:`None`. + + Raises: + :class:`yandex_music.YandexMusicError` """ url = f'{self.base_url}/artists/{artist_id}/direct-albums'