From b9b1d134f13968a0455220e9f0110b709b1bfcc2 Mon Sep 17 00:00:00 2001 From: Vitiko Date: Fri, 26 Nov 2021 21:56:26 -0400 Subject: [PATCH] Fix InvalidAppSecret --- qobuz_dl/qopy.py | 29 +++++++++++++++++------------ setup.py | 2 +- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/qobuz_dl/qopy.py b/qobuz_dl/qopy.py index 5eb8432..dd0f763 100644 --- a/qobuz_dl/qopy.py +++ b/qobuz_dl/qopy.py @@ -74,7 +74,8 @@ class Client: } elif epoint == "favorite/getUserFavorites": unix = time.time() - r_sig = "userLibrarygetAlbumsList" + str(unix) + kwargs["sec"] + # r_sig = "userLibrarygetAlbumsList" + str(unix) + kwargs["sec"] + r_sig = "favoritegetUserFavorites" + str(unix) + kwargs["sec"] r_sig_hashed = hashlib.md5(r_sig.encode("utf-8")).hexdigest() params = { "app_id": self.id, @@ -90,7 +91,7 @@ class Client: if int(fmt_id) not in (5, 6, 7, 27): raise InvalidQuality("Invalid quality id: choose between 5, 6, 7 or 27") r_sig = "trackgetFileUrlformat_id{}intentstreamtrack_id{}{}{}".format( - fmt_id, track_id, unix, self.sec + fmt_id, track_id, unix, kwargs.get("sec", self.sec) ) r_sig_hashed = hashlib.md5(r_sig.encode("utf-8")).hexdigest() params = { @@ -110,11 +111,12 @@ class Client: raise InvalidAppIdError("Invalid app id.\n" + RESET) else: logger.info(f"{GREEN}Logged: OK") - elif epoint in ["track/getFileUrl", "favorite/getUserFavorites"]: - if r.status_code == 400: - raise InvalidAppSecretError( - f"Invalid app secret: {r.json()}.\n" + RESET - ) + elif ( + epoint in ["track/getFileUrl", "favorite/getUserFavorites"] + and r.status_code == 400 + ): + raise InvalidAppSecretError(f"Invalid app secret: {r.json()}.\n" + RESET) + r.raise_for_status() return r.json() @@ -193,17 +195,20 @@ class Client: def test_secret(self, sec): try: - self.api_call("favorite/getUserFavorites", sec=sec) + self.api_call("track/getFileUrl", id=5966783, fmt_id=5, sec=sec) return True - except InvalidAppSecretError as error: - logger.info("Invalid SECRET: %s", error) + except InvalidAppSecretError: return False def cfg_setup(self): for secret in self.secrets: - if secret and self.test_secret(secret): + # Falsy secrets + if not secret: + continue + + if self.test_secret(secret): self.sec = secret break if self.sec is None: - raise InvalidAppSecretError("Invalid app secret.\n" + RESET) + raise InvalidAppSecretError("Can't find any valid app secret.\n" + RESET) diff --git a/setup.py b/setup.py index a1b0f4f..b0bec69 100644 --- a/setup.py +++ b/setup.py @@ -13,7 +13,7 @@ requirements = read_file("requirements.txt").strip().split() setup( name=pkg_name, - version="0.9.9.4", + version="0.9.9.5", author="Vitiko", author_email="vhnz98@gmail.com", description="The complete Lossless and Hi-Res music downloader for Qobuz",