diff options
| author | Robert Honz <exislow+github@gmail.com> | 2024-11-13 13:26:46 +0100 |
|---|---|---|
| committer | Robert Honz <exislow+github@gmail.com> | 2024-11-13 13:26:46 +0100 |
| commit | 5f9cc39ba736b0e9aa87da8b6cd27b67acf250fc (patch) | |
| tree | 84c32533ae4fd10194592fad03389282b5d48299 /tidal_dl_ng | |
| parent | 618b16257b6f398345bac467aa2706f7385ff577 (diff) | |
| download | tidal-dl-ng-5f9cc39ba736b0e9aa87da8b6cd27b67acf250fc.tar.gz | |
✨ GUI login updated to device mode.
Diffstat (limited to 'tidal_dl_ng')
| -rw-r--r-- | tidal_dl_ng/dialog.py | 2 | ||||
| -rw-r--r-- | tidal_dl_ng/gui.py | 17 | ||||
| -rw-r--r-- | tidal_dl_ng/ui/dialog_login.py | 73 |
3 files changed, 48 insertions, 44 deletions
diff --git a/tidal_dl_ng/dialog.py b/tidal_dl_ng/dialog.py index f82386b..ff31633 100644 --- a/tidal_dl_ng/dialog.py +++ b/tidal_dl_ng/dialog.py @@ -1,7 +1,7 @@ +import datetime import os.path import shutil import webbrowser -import datetime from enum import Enum, StrEnum from pathlib import Path diff --git a/tidal_dl_ng/gui.py b/tidal_dl_ng/gui.py index 4cc3150..6c5429f 100644 --- a/tidal_dl_ng/gui.py +++ b/tidal_dl_ng/gui.py @@ -5,6 +5,8 @@ from collections.abc import Callable, Sequence from PySide6.QtGui import QStandardItem from requests.exceptions import HTTPError +from tidalapi.session import LinkLogin +from tidalapi.types import JsonObj from tidal_dl_ng import __version__, update_available from tidal_dl_ng.dialog import DialogLogin, DialogPreferences, DialogVersion @@ -131,15 +133,18 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): hint: str = "After you have finished the TIDAL login via web browser click the 'OK' button." while not result: - login, future = self.tidal.session.login_oauth() - - d_login: DialogLogin = DialogLogin(url_login=login.verification_uri_complete, hint=hint, expires_in=login.expires_in, parent=self) + json_obj: JsonObj = self.tidal.session._login_with_link() + link_login: LinkLogin = LinkLogin(json_obj) + d_login: DialogLogin = DialogLogin( + url_login=link_login.verification_uri_complete, + hint=hint, + expires_in=link_login.expires_in, + parent=self, + ) if d_login.return_code == 1: try: - future.result() - token: dict[str, str | int] = self.tidal.session.pkce_get_auth_token(url_redirect) - self.tidal.session.process_auth_token(token) + self.tidal.session._process_link_login(json_obj) self.tidal.login_finalize() result = True diff --git a/tidal_dl_ng/ui/dialog_login.py b/tidal_dl_ng/ui/dialog_login.py index d30ca6c..59a78da 100644 --- a/tidal_dl_ng/ui/dialog_login.py +++ b/tidal_dl_ng/ui/dialog_login.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- - ################################################################################ ## Form generated from reading UI file 'dialog_login.ui' ## @@ -8,21 +6,15 @@ ## WARNING! All changes made in this file will be lost when recompiling UI file! ################################################################################ -from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale, - QMetaObject, QObject, QPoint, QRect, - QSize, QTime, QUrl, Qt) -from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor, - QFont, QFontDatabase, QGradient, QIcon, - QImage, QKeySequence, QLinearGradient, QPainter, - QPalette, QPixmap, QRadialGradient, QTransform) -from PySide6.QtWidgets import (QAbstractButton, QApplication, QDialog, QDialogButtonBox, - QHBoxLayout, QLabel, QSizePolicy, QTextBrowser, - QVBoxLayout, QWidget) +from PySide6.QtCore import QCoreApplication, QMetaObject, QRect, Qt +from PySide6.QtGui import QFont +from PySide6.QtWidgets import QDialogButtonBox, QHBoxLayout, QLabel, QSizePolicy, QTextBrowser, QVBoxLayout, QWidget + -class Ui_DialogLogin(object): +class Ui_DialogLogin: def setupUi(self, DialogLogin): if not DialogLogin.objectName(): - DialogLogin.setObjectName(u"DialogLogin") + DialogLogin.setObjectName("DialogLogin") DialogLogin.resize(451, 400) sizePolicy = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding) sizePolicy.setHorizontalStretch(0) @@ -30,22 +22,22 @@ class Ui_DialogLogin(object): sizePolicy.setHeightForWidth(DialogLogin.sizePolicy().hasHeightForWidth()) DialogLogin.setSizePolicy(sizePolicy) self.bb_dialog = QDialogButtonBox(DialogLogin) - self.bb_dialog.setObjectName(u"bb_dialog") + self.bb_dialog.setObjectName("bb_dialog") self.bb_dialog.setGeometry(QRect(20, 350, 411, 32)) sizePolicy.setHeightForWidth(self.bb_dialog.sizePolicy().hasHeightForWidth()) self.bb_dialog.setSizePolicy(sizePolicy) self.bb_dialog.setLayoutDirection(Qt.LayoutDirection.LeftToRight) - self.bb_dialog.setStyleSheet(u"") + self.bb_dialog.setStyleSheet("") self.bb_dialog.setOrientation(Qt.Orientation.Horizontal) - self.bb_dialog.setStandardButtons(QDialogButtonBox.StandardButton.Cancel|QDialogButtonBox.StandardButton.Ok) + self.bb_dialog.setStandardButtons(QDialogButtonBox.StandardButton.Cancel | QDialogButtonBox.StandardButton.Ok) self.verticalLayoutWidget = QWidget(DialogLogin) - self.verticalLayoutWidget.setObjectName(u"verticalLayoutWidget") + self.verticalLayoutWidget.setObjectName("verticalLayoutWidget") self.verticalLayoutWidget.setGeometry(QRect(20, 20, 411, 325)) self.lv_main = QVBoxLayout(self.verticalLayoutWidget) - self.lv_main.setObjectName(u"lv_main") + self.lv_main.setObjectName("lv_main") self.lv_main.setContentsMargins(0, 0, 0, 0) self.l_header = QLabel(self.verticalLayoutWidget) - self.l_header.setObjectName(u"l_header") + self.l_header.setObjectName("l_header") sizePolicy.setHeightForWidth(self.l_header.sizePolicy().hasHeightForWidth()) self.l_header.setSizePolicy(sizePolicy) font = QFont() @@ -56,7 +48,7 @@ class Ui_DialogLogin(object): self.lv_main.addWidget(self.l_header) self.l_description = QLabel(self.verticalLayoutWidget) - self.l_description.setObjectName(u"l_description") + self.l_description.setObjectName("l_description") sizePolicy.setHeightForWidth(self.l_description.sizePolicy().hasHeightForWidth()) self.l_description.setSizePolicy(sizePolicy) font1 = QFont() @@ -67,32 +59,33 @@ class Ui_DialogLogin(object): self.lv_main.addWidget(self.l_description) self.tb_url_login = QTextBrowser(self.verticalLayoutWidget) - self.tb_url_login.setObjectName(u"tb_url_login") + self.tb_url_login.setObjectName("tb_url_login") self.tb_url_login.setOpenExternalLinks(True) self.lv_main.addWidget(self.tb_url_login) self.horizontalLayout = QHBoxLayout() - self.horizontalLayout.setObjectName(u"horizontalLayout") + self.horizontalLayout.setObjectName("horizontalLayout") self.l_expires_description = QLabel(self.verticalLayoutWidget) - self.l_expires_description.setObjectName(u"l_expires_description") + self.l_expires_description.setObjectName("l_expires_description") self.horizontalLayout.addWidget(self.l_expires_description) self.l_expires_date_time = QLabel(self.verticalLayoutWidget) - self.l_expires_date_time.setObjectName(u"l_expires_date_time") + self.l_expires_date_time.setObjectName("l_expires_date_time") font2 = QFont() font2.setBold(True) self.l_expires_date_time.setFont(font2) - self.l_expires_date_time.setAlignment(Qt.AlignmentFlag.AlignRight|Qt.AlignmentFlag.AlignTrailing|Qt.AlignmentFlag.AlignVCenter) + self.l_expires_date_time.setAlignment( + Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignTrailing | Qt.AlignmentFlag.AlignVCenter + ) self.horizontalLayout.addWidget(self.l_expires_date_time) - self.lv_main.addLayout(self.horizontalLayout) self.l_hint = QLabel(self.verticalLayoutWidget) - self.l_hint.setObjectName(u"l_hint") + self.l_hint.setObjectName("l_hint") sizePolicy.setHeightForWidth(self.l_hint.sizePolicy().hasHeightForWidth()) self.l_hint.setSizePolicy(sizePolicy) self.l_hint.setFont(font1) @@ -100,21 +93,27 @@ class Ui_DialogLogin(object): self.lv_main.addWidget(self.l_hint) - self.retranslateUi(DialogLogin) self.bb_dialog.accepted.connect(DialogLogin.accept) self.bb_dialog.rejected.connect(DialogLogin.reject) QMetaObject.connectSlotsByName(DialogLogin) + # setupUi def retranslateUi(self, DialogLogin): - DialogLogin.setWindowTitle(QCoreApplication.translate("DialogLogin", u"Dialog", None)) - self.l_header.setText(QCoreApplication.translate("DialogLogin", u"TIDAL Login (as Device)", None)) - self.l_description.setText(QCoreApplication.translate("DialogLogin", u"Click the link below and login with your TIDAL credentials. TIDAL will ask you, if you like to add this app as a new device. You need to confirm this.", None)) - self.tb_url_login.setPlaceholderText(QCoreApplication.translate("DialogLogin", u"Copy this login URL...", None)) - self.l_expires_description.setText(QCoreApplication.translate("DialogLogin", u"This link expires at:", None)) - self.l_expires_date_time.setText(QCoreApplication.translate("DialogLogin", u"COMPUTING", None)) - self.l_hint.setText(QCoreApplication.translate("DialogLogin", u"Waiting...", None)) - # retranslateUi + DialogLogin.setWindowTitle(QCoreApplication.translate("DialogLogin", "Dialog", None)) + self.l_header.setText(QCoreApplication.translate("DialogLogin", "TIDAL Login (as Device)", None)) + self.l_description.setText( + QCoreApplication.translate( + "DialogLogin", + "Click the link below and login with your TIDAL credentials. TIDAL will ask you, if you like to add this app as a new device. You need to confirm this.", + None, + ) + ) + self.tb_url_login.setPlaceholderText(QCoreApplication.translate("DialogLogin", "Copy this login URL...", None)) + self.l_expires_description.setText(QCoreApplication.translate("DialogLogin", "This link expires at:", None)) + self.l_expires_date_time.setText(QCoreApplication.translate("DialogLogin", "COMPUTING", None)) + self.l_hint.setText(QCoreApplication.translate("DialogLogin", "Waiting...", None)) + # retranslateUi |
