From af4f1dd4011ee439d7e373a750cfed419407a979 Mon Sep 17 00:00:00 2001 From: afkarxyz Date: Sun, 13 Jul 2025 05:25:13 +0700 Subject: [PATCH] v3.7 --- SpotiFLAC.py | 4 ++-- getMetadata.py | 21 +++++++++++++++++---- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/SpotiFLAC.py b/SpotiFLAC.py index a3b66c4..7aed1c8 100644 --- a/SpotiFLAC.py +++ b/SpotiFLAC.py @@ -503,7 +503,7 @@ class QobuzRegionComboBox(QComboBox): class SpotiFLACGUI(QWidget): def __init__(self): super().__init__() - self.current_version = "3.6" + self.current_version = "3.7" self.tracks = [] self.reset_state() @@ -931,7 +931,7 @@ class SpotiFLACGUI(QWidget): spacer = QSpacerItem(20, 6, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed) about_layout.addItem(spacer) - footer_label = QLabel("v3.6 | July 2025") + footer_label = QLabel("v3.7 | July 2025") footer_label.setStyleSheet("font-size: 12px; margin-top: 10px;") about_layout.addWidget(footer_label, alignment=Qt.AlignmentFlag.AlignCenter) diff --git a/getMetadata.py b/getMetadata.py index be01dcf..26247c8 100644 --- a/getMetadata.py +++ b/getMetadata.py @@ -13,7 +13,20 @@ def get_random_user_agent(): return f"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_{randrange(11, 15)}_{randrange(4, 9)}) AppleWebKit/{randrange(530, 537)}.{randrange(30, 37)} (KHTML, like Gecko) Chrome/{randrange(80, 105)}.0.{randrange(3000, 4500)}.{randrange(60, 125)} Safari/{randrange(530, 537)}.{randrange(30, 36)}" def generate_totp(): - secret_cipher = [61, 110, 58, 98, 35, 79, 117, 69, 102, 72, 92, 102, 69, 93, 41, 101, 42, 75] + url = "https://raw.githubusercontent.com/Thereallo1026/spotify-secrets/refs/heads/main/secrets/secretBytes.json" + + try: + resp = requests.get(url, timeout=10) + if resp.status_code != 200: + raise Exception(f"Failed to fetch TOTP secrets from GitHub. Status: {resp.status_code}") + secrets_list = resp.json() + + latest_entry = max(secrets_list, key=lambda x: x["version"]) + version = latest_entry["version"] + secret_cipher = latest_entry["secret"] + except Exception as e: + raise Exception(f"Failed to fetch secrets from GitHub: {str(e)}") + processed = [byte ^ ((i % 33) + 9) for i, byte in enumerate(secret_cipher)] processed_str = "".join(map(str, processed)) utf8_bytes = processed_str.encode('utf-8') @@ -36,7 +49,7 @@ def generate_totp(): server_time = data.get("serverTime") if server_time is None: raise Exception("Failed to fetch server time from Spotify") - return totp, server_time + return totp, server_time, version except Exception as e: raise Exception(f"Error getting server time: {str(e)}") @@ -110,7 +123,7 @@ def get_json_from_api(api_url, access_token): def get_access_token(): try: - totp, server_time = generate_totp() + totp, server_time, totp_version = generate_totp() otp_code = totp.at(int(server_time)) timestamp_ms = int(time.time() * 1000) @@ -119,7 +132,7 @@ def get_access_token(): 'productType': 'web-player', 'totp': otp_code, 'totpServerTime': server_time, - 'totpVer': '8', + 'totpVer': str(totp_version), 'sTime': server_time, 'cTime': timestamp_ms, 'buildVer': 'web-player_2025-07-02_1720000000000_12345678',