From 4773565f4586fa632b58c04c81b23511c6e07c84 Mon Sep 17 00:00:00 2001 From: Marshal Date: Tue, 24 Dec 2019 00:20:07 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D0=BF=D0=BE=D0=B4=D1=81=D1=82=D0=B0=D0=BD?= =?UTF-8?q?=D0=BE=D0=B2=D0=BA=D0=B0=20=D1=82=D0=B5=D0=BA=D1=83=D1=89=D0=B5?= =?UTF-8?q?=D0=B3=D0=BE=20=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0?= =?UTF-8?q?=D1=82=D0=B5=D0=BB=D1=8F=20=D0=B2=20=D0=BC=D0=B5=D1=82=D0=BE?= =?UTF-8?q?=D0=B4=D1=8B=20=D0=BA=D0=BB=D0=B8=D0=B5=D0=BD=D1=82=D0=B0,=20?= =?UTF-8?q?=D0=B5=D1=81=D0=BB=D0=B8=20=D0=B0=D1=80=D0=B3=D1=83=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D1=82=20=D0=BD=D0=B5=20=D0=B1=D1=8B=D0=BB=20=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=B4=D0=B0=D0=BD.=20=D0=98=D1=81=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20=D1=81=D0=BE=D0=BA=D1=80?= =?UTF-8?q?=D0=B0=D1=89=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yandex_music/album/album.py | 4 +-- yandex_music/artist/artist.py | 4 +-- yandex_music/client.py | 56 +++++++++++++++++-------------- yandex_music/playlist/playlist.py | 6 ++-- yandex_music/track/track.py | 4 +-- 5 files changed, 40 insertions(+), 34 deletions(-) diff --git a/yandex_music/album/album.py b/yandex_music/album/album.py index a9b861f..af03301 100644 --- a/yandex_music/album/album.py +++ b/yandex_music/album/album.py @@ -96,14 +96,14 @@ class Album(YandexMusicObject): client.users_likes_albums_add(album.id, user.id *args, **kwargs) """ - return self.client.users_likes_albums_add(self.id, self.client.account.uid, *args, **kwargs) + return self.client.users_likes_albums_add(self.id, self.client.me.account.uid, *args, **kwargs) def dislike(self, *args, **kwargs): """Сокращение для:: client.users_likes_albums_remove(album.id, user.id *args, **kwargs) """ - return self.client.users_likes_albums_remove(self.id, self.client.account.uid, *args, **kwargs) + return self.client.users_likes_albums_remove(self.id, self.client.me.account.uid, *args, **kwargs) @classmethod def de_json(cls, data, client): diff --git a/yandex_music/artist/artist.py b/yandex_music/artist/artist.py index f8cb00f..b766c16 100644 --- a/yandex_music/artist/artist.py +++ b/yandex_music/artist/artist.py @@ -79,14 +79,14 @@ class Artist(YandexMusicObject): client.users_likes_artists_add(artist.id, user.id *args, **kwargs) """ - return self.client.users_likes_artists_add(self.id, self.client.account.uid, *args, **kwargs) + return self.client.users_likes_artists_add(self.id, self.client.me.account.uid, *args, **kwargs) def dislike(self, *args, **kwargs): """Сокращение для:: client.users_likes_artists_remove(artist.id, user.id *args, **kwargs) """ - return self.client.users_likes_artists_remove(self.id, self.client.account.uid, *args, **kwargs) + return self.client.users_likes_artists_remove(self.id, self.client.me.account.uid, *args, **kwargs) def get_tracks(self, page=0, page_size=20, *args, **kwargs): """Сокращение для:: diff --git a/yandex_music/client.py b/yandex_music/client.py index b1862a5..f8a44c5 100644 --- a/yandex_music/client.py +++ b/yandex_music/client.py @@ -49,6 +49,9 @@ def log(method): class Client(YandexMusicObject): """Класс представляющий клиент Yandex Music. + При `fetch_account_status = False` многие сокращения перестанут работать в связи с тем, что неоткуда будет взять + uid аккаунта для отправки запроса. Так же в большинстве методов придётся передавать uid явно. + Attributes: logger (:obj:`logging.Logger`): Объект логера. token (:obj:`str`): Уникальный ключ для аутентификации. @@ -497,6 +500,9 @@ class Client(YandexMusicObject): :class:`yandex_music.YandexMusicError` """ + if uid is None and self.me is not None: + uid = self.me.account.uid + url = f'{self.base_url}/play-audio' data = { @@ -504,7 +510,7 @@ class Client(YandexMusicObject): 'from-cache': from_cache, 'from': from_, 'play-id': play_id or '', - 'uid': uid or self.account.uid, + 'uid': uid, 'timestamp': timestamp or f'{datetime.now().isoformat()}Z', 'track-length-seconds': track_length_seconds, 'total-played-seconds': total_played_seconds, @@ -628,8 +634,8 @@ class Client(YandexMusicObject): :class:`yandex_music.YandexMusicError` """ - if user_id is None: - user_id = self.account.uid + 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' @@ -662,8 +668,8 @@ class Client(YandexMusicObject): :class:`yandex_music.YandexMusicError` """ - if user_id is None: - user_id = self.account.uid + 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/create' @@ -695,8 +701,8 @@ class Client(YandexMusicObject): :class:`yandex_music.YandexMusicError` """ - if user_id is None: - user_id = self.account.uid + 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}/delete' @@ -724,8 +730,8 @@ class Client(YandexMusicObject): :class:`yandex_music.YandexMusicError` """ - if user_id is None: - user_id = self.account.uid + 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}/name' @@ -758,8 +764,8 @@ class Client(YandexMusicObject): :class:`yandex_music.YandexMusicError` """ - if user_id is None: - user_id = self.account.uid + 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}/change' @@ -799,8 +805,8 @@ class Client(YandexMusicObject): :class:`yandex_music.YandexMusicError` """ - if user_id is None: - user_id = self.account.uid + if user_id is None and self.me is not None: + user_id = self.me.account.uid diff = Difference().add_insert(at, {'id': track_id, 'album_id': album_id}) @@ -831,8 +837,8 @@ class Client(YandexMusicObject): :class:`yandex_music.YandexMusicError` """ - if user_id is None: - user_id = self.account.uid + if user_id is None and self.me is not None: + user_id = self.me.account.uid diff = Difference().add_delete(from_, to) @@ -991,8 +997,8 @@ class Client(YandexMusicObject): 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: - user_id = self.account.uid + if user_id is None and self.me is not None: + user_id = self.me.account.uid action = 'remove' if remove else 'add-multiple' url = f'{self.base_url}/users/{user_id}/likes/{object_type}s/{action}' @@ -1072,8 +1078,8 @@ class Client(YandexMusicObject): @log def users_playlists_list(self, user_id: int or str = None, timeout=None, *args, **kwargs): - if user_id is None: - user_id = self.account.uid + 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/list' @@ -1082,8 +1088,8 @@ class Client(YandexMusicObject): return Playlist.de_list(result, self) def _get_likes(self, object_type, user_id: int or str = None, params=None, timeout=None, *args, **kwargs): - if user_id is None: - user_id = self.account.uid + 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}/likes/{object_type}s' @@ -1115,8 +1121,8 @@ class Client(YandexMusicObject): @log def users_dislikes_tracks(self, user_id: int or str = None, if_modified_since_revision=0, timeout=None, *args, **kwargs): - if user_id is None: - user_id = self.account.uid + 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}/dislikes/tracks' @@ -1127,8 +1133,8 @@ class Client(YandexMusicObject): def _dislike_action(self, ids: str or int or list, remove: bool = False, user_id: str or int = None, timeout=None, *args, **kwargs): - if user_id is None: - user_id = self.account.uid + if user_id is None and self.me is not None: + user_id = self.me.account.uid action = 'remove' if remove else 'add-multiple' url = f'{self.base_url}/users/{user_id}/dislikes/tracks/{action}' diff --git a/yandex_music/playlist/playlist.py b/yandex_music/playlist/playlist.py index ad2bf47..5ef35d4 100644 --- a/yandex_music/playlist/playlist.py +++ b/yandex_music/playlist/playlist.py @@ -74,7 +74,7 @@ class Playlist(YandexMusicObject): @property def is_mine(self): - return self.owner.uid == self.client.account.uid + return self.owner.uid == self.client.me.account.uid @property def playlist_id(self): @@ -113,14 +113,14 @@ class Playlist(YandexMusicObject): client.users_likes_playlists_add(playlist.uid, user.id *args, **kwargs) """ - return self.client.users_likes_playlists_add(self.uid, self.client.account.uid, *args, **kwargs) + return self.client.users_likes_playlists_add(self.uid, self.client.me.account.uid, *args, **kwargs) def dislike(self, *args, **kwargs): """Сокращение для:: client.users_likes_playlists_remove(playlist.uid, user.id *args, **kwargs) """ - return self.client.users_likes_playlists_remove(self.uid, self.client.account.uid, *args, **kwargs) + return self.client.users_likes_playlists_remove(self.uid, self.client.me.account.uid, *args, **kwargs) @classmethod def de_json(cls, data, client): diff --git a/yandex_music/track/track.py b/yandex_music/track/track.py index ffaea58..6569e64 100644 --- a/yandex_music/track/track.py +++ b/yandex_music/track/track.py @@ -105,14 +105,14 @@ class Track(YandexMusicObject): client.users_likes_tracks_add(track.id, user.id, *args, **kwargs) """ - return self.client.users_likes_tracks_add(self.track_id, self.client.account.uid, *args, **kwargs) + return self.client.users_likes_tracks_add(self.track_id, self.client.me.account.uid, *args, **kwargs) def dislike(self, *args, **kwargs): """Сокращение для:: client.users_likes_tracks_remove(track.id, user.id *args, **kwargs) """ - return self.client.users_likes_tracks_remove(self.track_id, self.client.account.uid, *args, **kwargs) + return self.client.users_likes_tracks_remove(self.track_id, self.client.me.account.uid, *args, **kwargs) @property def track_id(self):