From e266149684baf6e49462df6d758c6a5714dbfc05 Mon Sep 17 00:00:00 2001 From: Rikrdoga Date: Tue, 21 Oct 2025 11:45:11 -0600 Subject: [PATCH] Move credentials to constants, improve docs (tidal_obj), and clean up Atmos legacy code --- tidal_dl_ng/config.py | 20 ++++++++------------ tidal_dl_ng/constants.py | 11 +++++++++++ tidal_dl_ng/download.py | 7 ++++--- tidal_dl_ng/model/cfg.py | 2 -- tidal_dl_ng/ui/main.ui | 5 ----- 5 files changed, 23 insertions(+), 22 deletions(-) diff --git a/tidal_dl_ng/config.py b/tidal_dl_ng/config.py index a490e7d..28ea58b 100644 --- a/tidal_dl_ng/config.py +++ b/tidal_dl_ng/config.py @@ -1,4 +1,3 @@ -import base64 import json import os import shutil @@ -10,20 +9,17 @@ from threading import Event from typing import Any import tidalapi -from tidalapi import Quality +from tidal_dl_ng.constants import ( + ATMOS_CLIENT_ID, + ATMOS_CLIENT_SECRET, + ATMOS_REQUEST_QUALITY, +) from tidal_dl_ng.helper.decorator import SingletonMeta from tidal_dl_ng.helper.path import path_config_base, path_file_settings, path_file_token from tidal_dl_ng.model.cfg import Settings as ModelSettings from tidal_dl_ng.model.cfg import Token as ModelToken -_ATMOS_ID_B64 = "N203QX" + "AwSkM5aj" + "FjT00zbg==" -_ATMOS_SECRET_B64 = "dlJBZEEx" + "MDh0bHZrSnB" + "Uc0daUzhyR1" + "o3eFRsYkow" + "cWFaMks5c2F" + "FenNnWT0=" - -_ATMOS_CLIENT_ID = base64.b64decode(_ATMOS_ID_B64).decode("utf-8") -_ATMOS_CLIENT_SECRET = base64.b64decode(_ATMOS_SECRET_B64).decode("utf-8") -_ATMOS_REQUEST_QUALITY = Quality.low_320k - class BaseConfig: data: ModelSettings | ModelToken @@ -177,9 +173,9 @@ class Tidal(BaseConfig, metaclass=SingletonMeta): original_audio_quality = self.session.audio_quality try: - self.session.config.client_id = _ATMOS_CLIENT_ID - self.session.config.client_secret = _ATMOS_CLIENT_SECRET - self.session.audio_quality = _ATMOS_REQUEST_QUALITY + self.session.config.client_id = ATMOS_CLIENT_ID + self.session.config.client_secret = ATMOS_CLIENT_SECRET + self.session.audio_quality = ATMOS_REQUEST_QUALITY if not self.login_token(do_pkce=self.is_pkce): print("Warning: Session restore failed.") diff --git a/tidal_dl_ng/constants.py b/tidal_dl_ng/constants.py index f2f774b..79ae501 100644 --- a/tidal_dl_ng/constants.py +++ b/tidal_dl_ng/constants.py @@ -1,5 +1,8 @@ +import base64 from enum import StrEnum +from tidalapi import Quality + CTX_TIDAL: str = "tidal" REQUESTS_TIMEOUT_SEC: int = 45 EXTENSION_LYRICS: str = ".lrc" @@ -15,6 +18,14 @@ FILENAME_LENGTH_MAX: int = 255 FORMAT_TEMPLATE_EXPLICIT: str = " (Explicit)" METADATA_EXPLICIT: str = " 🅴" +# Dolby Atmos API credentials (obfuscated) +ATMOS_ID_B64 = "N203QX" + "AwSkM5aj" + "FjT00zbg==" +ATMOS_SECRET_B64 = "dlJBZEEx" + "MDh0bHZrSnB" + "Uc0daUzhyR1" + "o3eFRsYkow" + "cWFaMks5c2F" + "FenNnWT0=" + +ATMOS_CLIENT_ID = base64.b64decode(ATMOS_ID_B64).decode("utf-8") +ATMOS_CLIENT_SECRET = base64.b64decode(ATMOS_SECRET_B64).decode("utf-8") +ATMOS_REQUEST_QUALITY = Quality.low_320k + class QualityVideo(StrEnum): P360 = "360" diff --git a/tidal_dl_ng/download.py b/tidal_dl_ng/download.py index 674041f..7d855db 100644 --- a/tidal_dl_ng/download.py +++ b/tidal_dl_ng/download.py @@ -119,7 +119,7 @@ class Download: def __init__( self, - tidal_obj: Tidal, + tidal_obj: Tidal, # Required for Atmos session context manager path_base: str, fn_logger: Callable, skip_existing: bool = False, @@ -132,8 +132,9 @@ class Download: """Initialize the Download object and its dependencies. Args: - session (Session): TIDAL session object. - tidal_obj (Tidal): The TIDAL object (from config.py) + tidal_obj (Tidal): TIDAL configuration object. Required for: + - session: Main TIDAL API session + - atmos_session_context(): Dolby Atmos credential switching path_base (str): Base path for downloads. fn_logger (Callable): Logger function or object. skip_existing (bool, optional): Whether to skip existing files. Defaults to False. diff --git a/tidal_dl_ng/model/cfg.py b/tidal_dl_ng/model/cfg.py index ab72cf9..a376f2f 100644 --- a/tidal_dl_ng/model/cfg.py +++ b/tidal_dl_ng/model/cfg.py @@ -57,8 +57,6 @@ class Settings: filename_delimiter_artist: str = ", " filename_delimiter_album_artist: str = ", " metadata_target_upc: MetadataTargetUPC = MetadataTargetUPC.UPC - api_key_client_id: str = "" - api_key_client_secret: str = "" @dataclass_json diff --git a/tidal_dl_ng/ui/main.ui b/tidal_dl_ng/ui/main.ui index 2b6d9ac..23d98e6 100644 --- a/tidal_dl_ng/ui/main.ui +++ b/tidal_dl_ng/ui/main.ui @@ -671,11 +671,6 @@ -<<<<<<< HEAD - - .. -======= ->>>>>>> 13dddc7 (Refactor Dolby Atmos feature to be internal and seamless)