v3.9
This commit is contained in:
+2
-2
@@ -505,7 +505,7 @@ class QobuzRegionComboBox(QComboBox):
|
|||||||
class SpotiFLACGUI(QWidget):
|
class SpotiFLACGUI(QWidget):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.current_version = "3.8"
|
self.current_version = "3.9"
|
||||||
self.tracks = []
|
self.tracks = []
|
||||||
self.reset_state()
|
self.reset_state()
|
||||||
|
|
||||||
@@ -939,7 +939,7 @@ class SpotiFLACGUI(QWidget):
|
|||||||
spacer = QSpacerItem(20, 6, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
|
spacer = QSpacerItem(20, 6, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
|
||||||
about_layout.addItem(spacer)
|
about_layout.addItem(spacer)
|
||||||
|
|
||||||
footer_label = QLabel("v3.8 | July 2025")
|
footer_label = QLabel("v3.9 | July 2025")
|
||||||
footer_label.setStyleSheet("font-size: 12px; margin-top: 10px;")
|
footer_label.setStyleSheet("font-size: 12px; margin-top: 10px;")
|
||||||
about_layout.addWidget(footer_label, alignment=Qt.AlignmentFlag.AlignCenter)
|
about_layout.addWidget(footer_label, alignment=Qt.AlignmentFlag.AlignCenter)
|
||||||
|
|
||||||
|
|||||||
+2
-28
@@ -2,7 +2,6 @@ import asyncio
|
|||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import tempfile
|
|
||||||
import time
|
import time
|
||||||
import httpx
|
import httpx
|
||||||
from mutagen.flac import FLAC, Picture
|
from mutagen.flac import FLAC, Picture
|
||||||
@@ -24,22 +23,11 @@ class TidalDownloader:
|
|||||||
self.progress_callback = ProgressCallback()
|
self.progress_callback = ProgressCallback()
|
||||||
self.client_id = "zU4XHVVkc2tDPo4t"
|
self.client_id = "zU4XHVVkc2tDPo4t"
|
||||||
self.client_secret = "VJKhDFqJPqvsPVNBV6ukXTJmwlvbttP7wlMlrc72se4="
|
self.client_secret = "VJKhDFqJPqvsPVNBV6ukXTJmwlvbttP7wlMlrc72se4="
|
||||||
self.temp_dir = tempfile.gettempdir()
|
|
||||||
self.token_path = os.path.join(self.temp_dir, "tidal_token.json")
|
|
||||||
self.access_token = None
|
|
||||||
self._load_token()
|
|
||||||
|
|
||||||
def set_progress_callback(self, callback):
|
def set_progress_callback(self, callback):
|
||||||
self.progress_callback = callback
|
self.progress_callback = callback
|
||||||
|
|
||||||
def _load_token(self):
|
|
||||||
if os.path.exists(self.token_path):
|
|
||||||
try:
|
|
||||||
with open(self.token_path, "r") as tok:
|
|
||||||
token = json.loads(tok.read())
|
|
||||||
self.access_token = token.get("access_token")
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
def sanitize_filename(self, filename):
|
def sanitize_filename(self, filename):
|
||||||
if not filename:
|
if not filename:
|
||||||
@@ -48,9 +36,6 @@ class TidalDownloader:
|
|||||||
return re.sub(r'\s+', ' ', sanitized).strip() or "Unnamed Track"
|
return re.sub(r'\s+', ' ', sanitized).strip() or "Unnamed Track"
|
||||||
|
|
||||||
async def get_access_token(self):
|
async def get_access_token(self):
|
||||||
if self.access_token:
|
|
||||||
return self.access_token
|
|
||||||
|
|
||||||
refresh_url = "https://auth.tidal.com/v1/oauth2/token"
|
refresh_url = "https://auth.tidal.com/v1/oauth2/token"
|
||||||
|
|
||||||
payload = {
|
payload = {
|
||||||
@@ -68,18 +53,7 @@ class TidalDownloader:
|
|||||||
|
|
||||||
if response.status_code == 200:
|
if response.status_code == 200:
|
||||||
token_data = response.json()
|
token_data = response.json()
|
||||||
new_token = token_data.get("access_token")
|
return token_data.get("access_token")
|
||||||
|
|
||||||
try:
|
|
||||||
with open(self.token_path, "w") as f:
|
|
||||||
json.dump({
|
|
||||||
"access_token": new_token
|
|
||||||
}, f)
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
self.access_token = new_token
|
|
||||||
return new_token
|
|
||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user