Move credentials to constants, improve docs (tidal_obj), and clean up Atmos legacy code
This commit is contained in:
+8
-12
@@ -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.")
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user