summaryrefslogtreecommitdiff
path: root/tidal_dl_ng/gui.py
diff options
context:
space:
mode:
Diffstat (limited to 'tidal_dl_ng/gui.py')
-rw-r--r--tidal_dl_ng/gui.py44
1 files changed, 42 insertions, 2 deletions
diff --git a/tidal_dl_ng/gui.py b/tidal_dl_ng/gui.py
index d0ee637..f38461b 100644
--- a/tidal_dl_ng/gui.py
+++ b/tidal_dl_ng/gui.py
@@ -52,7 +52,7 @@ from typing import Any
from requests.exceptions import HTTPError
from tidalapi.session import LinkLogin
-
+from tidal_dl_ng import api as ApiKeys
from tidal_dl_ng import __version__, update_available
from tidal_dl_ng.dialog import DialogLogin, DialogPreferences, DialogVersion
from tidal_dl_ng.helper.gui import (
@@ -170,6 +170,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
self._init_progressbar()
self._populate_quality(self.cb_quality_audio, Quality)
self._populate_quality(self.cb_quality_video, QualityVideo)
+ self._populate_api_keys(self.cb_api_key)
self._populate_search_types(self.cb_search_type, SearchTypes)
self.apply_settings(self.settings)
self._init_signals()
@@ -305,6 +306,14 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
self.te_debug.setTextCursor(cursor)
self.te_debug.ensureCursorVisible()
+
+ def _populate_api_keys(self, ui_target: QtWidgets.QComboBox) -> None:
+ """Puebla el ComboBox con los API keys disponibles."""
+ ui_target.addItem("Por defecto", None)
+ for i, key_data in enumerate(ApiKeys.getItems()):
+ if key_data["valid"] == "True":
+ platform_name = f"{key_data['platform']} - ({key_data['formats']})"
+ ui_target.addItem(platform_name, i)
def _populate_quality(self, ui_target: QtWidgets.QComboBox, options: Iterable[Any]) -> None:
"""Populate a combo box with quality options.
@@ -516,6 +525,17 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
item["element"].setCurrentIndex(idx)
else:
item["element"].setCurrentIndex(item["default_id"])
+ if settings.data.api_key_client_id:
+ for i in range(self.cb_api_key.count()):
+ key_index = self.cb_api_key.itemData(i)
+ if key_index is not None:
+ key_data = ApiKeys.getItem(key_index)
+ if key_data["clientId"] == settings.data.api_key_client_id:
+ self.cb_api_key.setCurrentIndex(i)
+ break
+ else:
+ self.cb_api_key.setCurrentIndex(0) # "Por defecto"
+
def on_spinner_start(self, parent: QtWidgets.QWidget) -> None:
"""Start a loading spinner on the given parent widget.
@@ -885,6 +905,11 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
Returns:
ResultItem: The constructed ResultItem.
"""
+
+ final_quality = quality_audio_highest(item)
+ if hasattr(item, "audio_modes") and "DOLBY_ATMOS" in item.audio_modes:
+ final_quality = "Dolby Atmos"
+
return ResultItem(
position=idx,
artist=name_builder_artist(item),
@@ -892,7 +917,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
album=item.album.name,
duration_sec=item.duration,
obj=item,
- quality=quality_audio_highest(item),
+ quality=final_quality,
explicit=bool(item.explicit),
date_user_added=date_user_added,
date_release=date_release,
@@ -1105,6 +1130,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
)
self.cb_quality_audio.currentIndexChanged.connect(self.on_quality_set_audio)
self.cb_quality_video.currentIndexChanged.connect(self.on_quality_set_video)
+ self.cb_api_key.currentIndexChanged.connect(self.on_api_key_set)
self.tr_lists_user.itemClicked.connect(self.on_list_items_show)
self.s_spinner_start[QtWidgets.QWidget].connect(self.on_spinner_start)
self.s_spinner_stop.connect(self.on_spinner_stop)
@@ -1207,6 +1233,20 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
if self.tidal:
self.tidal.settings_apply()
+ def on_api_key_set(self, index: int) -> None:
+ """Guarda el API Key seleccionado en la configuración."""
+ key_index = self.cb_api_key.itemData(index)
+ if key_index is not None:
+ key_data = ApiKeys.getItem(key_index)
+ self.settings.data.api_key_client_id = key_data["clientId"]
+ self.settings.data.api_key_client_secret = key_data["clientSecret"]
+ else: # Si se selecciona "Por defecto"
+ self.settings.data.api_key_client_id = ""
+ self.settings.data.api_key_client_secret = ""
+
+ self.settings.save()
+ logger_gui.info("API Key cambiado. Reinicia la aplicación para aplicar los cambios.")
+
def on_list_items_show(self, item: QtWidgets.QTreeWidgetItem) -> None:
"""Show the items in the selected playlist or mix.