Update v2.4

This commit is contained in:
afkarxyz
2025-04-08 13:07:26 +07:00
parent 479c6ede2b
commit 222d681551
2 changed files with 233 additions and 66 deletions
+40 -11
View File
@@ -29,6 +29,26 @@ class Track:
duration_ms: int
id: str
class MetadataFetchWorker(QThread):
finished = pyqtSignal(dict)
error = pyqtSignal(str)
def __init__(self, url):
super().__init__()
self.url = url
def run(self):
try:
metadata = get_filtered_data(self.url)
if "error" in metadata:
self.error.emit(metadata["error"])
else:
self.finished.emit(metadata)
except SpotifyInvalidUrlException as e:
self.error.emit(str(e))
except Exception as e:
self.error.emit(f'Failed to fetch metadata: {str(e)}')
class DownloadWorker(QThread):
finished = pyqtSignal(bool, str, list)
progress = pyqtSignal(str, int)
@@ -310,7 +330,7 @@ class ServiceComboBox(QComboBox):
class SpotiFLACGUI(QWidget):
def __init__(self):
super().__init__()
self.current_version = "2.3"
self.current_version = "2.4"
self.tracks = []
self.reset_state()
@@ -729,7 +749,7 @@ class SpotiFLACGUI(QWidget):
spacer = QSpacerItem(20, 6, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
about_layout.addItem(spacer)
footer_label = QLabel("v2.3 | March 2025")
footer_label = QLabel("v2.4 | April 2025")
footer_label.setStyleSheet("font-size: 12px; color: palette(text); margin-top: 10px;")
about_layout.addWidget(footer_label, alignment=Qt.AlignmentFlag.AlignCenter)
@@ -788,11 +808,20 @@ class SpotiFLACGUI(QWidget):
self.reset_state()
self.reset_ui()
metadata = get_filtered_data(url)
if "error" in metadata:
raise Exception(metadata["error"])
url_info = parse_uri(url)
self.log_output.append('Just a moment. Fetching metadata...')
self.tab_widget.setCurrentWidget(self.process_tab)
self.metadata_worker = MetadataFetchWorker(url)
self.metadata_worker.finished.connect(self.on_metadata_fetched)
self.metadata_worker.error.connect(self.on_metadata_error)
self.metadata_worker.start()
except Exception as e:
self.log_output.append(f'Error: Failed to start metadata fetch: {str(e)}')
def on_metadata_fetched(self, metadata):
try:
url_info = parse_uri(self.spotify_url.text().strip())
if url_info["type"] == "track":
self.handle_track_metadata(metadata["track"])
@@ -803,11 +832,11 @@ class SpotiFLACGUI(QWidget):
self.update_button_states()
self.tab_widget.setCurrentIndex(0)
except SpotifyInvalidUrlException as e:
self.log_output.append(f'Error: {str(e)}')
except Exception as e:
self.log_output.append(f'Error: Failed to fetch metadata: {str(e)}')
self.log_output.append(f'Error: {str(e)}')
def on_metadata_error(self, error_message):
self.log_output.append(f'Error: {error_message}')
def handle_track_metadata(self, track_data):
track_id = track_data["external_urls"].split("/")[-1]