From 4d4750e807608247ccde760a6a2683757a44f1f3 Mon Sep 17 00:00:00 2001 From: RemixDev <RemixDev64@gmail.com> Date: Thu, 23 Sep 2021 12:04:58 +0200 Subject: [PATCH] get_tracks_url now returns all urls in a list --- deezer/__init__.py | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/deezer/__init__.py b/deezer/__init__.py index c11ec77..804e74a 100644 --- a/deezer/__init__.py +++ b/deezer/__init__.py @@ -139,16 +139,23 @@ class Deezer: return (self.current_user, self.selected_account) def get_track_url(self, track_token, track_format): - return self.get_tracks_url([track_token, ], track_format) + tracks = self.get_tracks_url([track_token, ], track_format) + if len(tracks) > 0: + if isinstance(tracks[0], DeezerError): + raise tracks[0] + else: + return tracks[0] + return None def get_tracks_url(self, track_tokens, track_format): if not isinstance(track_tokens, list): track_tokens = [track_tokens, ] if not self.current_user['license_token']: - return None + return [] if track_format == "FLAC" and not self.current_user['can_stream_lossless'] or format == "MP3_320" and not self.current_user['can_stream_hq']: raise WrongLicense(format) + result = [] try: request = self.session.post( "https://media.deezer.com/v1/get_url", @@ -167,13 +174,17 @@ class Deezer: request.raise_for_status() response = request.json() except requests.exceptions.HTTPError: - return None + return [] if len(response.get('data', [])): - if 'errors' in response['data'][0]: - if response['data'][0]['errors'][0]['code'] == 2002: - raise WrongGeolocation(self.current_user['country']) - raise DeezerError(json.dumps(response)) - if response['data'][0]['media']: - return response['data'][0]['media'][0]['sources'][0]['url'] - return None + for data in response['data']: + if 'errors' in data: + if data['errors'][0]['code'] == 2002: + result.append(WrongGeolocation(self.current_user['country'])) + else: + result.append(DeezerError(json.dumps(response))) + if data['media']: + result.append(data['media'][0]['sources'][0]['url']) + else: + result.append(None) + return result