Move credentials to constants, improve docs (tidal_obj), and clean up Atmos legacy code

This commit is contained in:
Rikrdoga
2025-10-21 11:58:34 -06:00
parent 234ed80192
commit e266149684
5 changed files with 23 additions and 22 deletions
+8 -12
View File
@@ -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.")
+11
View File
@@ -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"
+4 -3
View File
@@ -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.
-2
View File
@@ -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
-5
View File
@@ -671,11 +671,6 @@
</property>
<property name="icon">
<iconset theme="QIcon::ThemeIcon::MediaPlaybackPause"/>
<<<<<<< HEAD
<iconset theme="QIcon::ThemeIcon::MediaPlaybackStart">
<normaloff>.</normaloff>.</iconset>
=======
>>>>>>> 13dddc7 (Refactor Dolby Atmos feature to be internal and seamless)
</property>
</widget>
</item>