diff options
| author | exislow <exislow@users.noreply.github.com> | 2025-10-22 21:34:02 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-22 21:34:02 +0200 |
| commit | 0cf3516fb054c312c504d45ca5fe60caf34f9a21 (patch) | |
| tree | 9ff8e25ce03a5799a706e0f5c92050fdb1e6af93 /tidal_dl_ng/config.py | |
| parent | a71bc18ca61c4d8c4e2570c4696ec78f38930ba4 (diff) | |
| parent | e266149684baf6e49462df6d758c6a5714dbfc05 (diff) | |
| download | tidal-dl-ng-0cf3516fb054c312c504d45ca5fe60caf34f9a21.tar.gz | |
Merge pull request #573 from Rikrdoga/Dolby_Atmos
Implement Dolby Atmos Support & API Key Selection
Diffstat (limited to 'tidal_dl_ng/config.py')
| -rw-r--r-- | tidal_dl_ng/config.py | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/tidal_dl_ng/config.py b/tidal_dl_ng/config.py index 72b9f93..28ea58b 100644 --- a/tidal_dl_ng/config.py +++ b/tidal_dl_ng/config.py @@ -2,6 +2,7 @@ import json import os import shutil from collections.abc import Callable +from contextlib import contextmanager from json import JSONDecodeError from pathlib import Path from threading import Event @@ -9,6 +10,11 @@ from typing import Any import tidalapi +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 @@ -110,7 +116,7 @@ class Tidal(BaseConfig, metaclass=SingletonMeta): if settings: self.settings = settings - self.session.audio_quality = self.settings.data.quality_audio + self.session.audio_quality = tidalapi.Quality(self.settings.data.quality_audio) self.session.video_quality = tidalapi.VideoQuality.high return True @@ -156,6 +162,34 @@ class Tidal(BaseConfig, metaclass=SingletonMeta): self.set_option("expiry_time", self.session.expiry_time) self.save() + @contextmanager + def atmos_session_context(self): + + if not self.session.check_login(): + print("Not logged in.") + + original_client_id = self.session.config.client_id + original_client_secret = self.session.config.client_secret + 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 + + if not self.login_token(do_pkce=self.is_pkce): + print("Warning: Session restore failed.") + + yield + + finally: + self.session.config.client_id = original_client_id + self.session.config.client_secret = original_client_secret + self.session.audio_quality = original_audio_quality + + if not self.login_token(do_pkce=self.is_pkce): + print("Warning: Restoring the original session context failed. Please restart the application.") + def login(self, fn_print: Callable) -> bool: is_token = self.login_token() result = False |
