refactor: Make rate limiting configurable and move session validation to Tidal class

- Add api_rate_limit_batch_size and api_rate_limit_delay_sec to Settings (cfg.py)
- Move validate_session() and is_authentication_error() to Tidal class (config.py)
- Update _load_albums_with_rate_limiting() to use config values instead of hardcoded 20/3
- Update _handle_album_load_error() to use Tidal.is_authentication_error()
- Remove _validate_session() from gui.py (now uses Tidal.validate_session())
- Addresses maintainer feedback: configurable tweaking variables and proper separation of concerns
This commit is contained in:
Winman486
2025-10-21 15:23:18 -05:00
parent 6c1704e3c4
commit e9070eef66
3 changed files with 37 additions and 21 deletions
+20
View File
@@ -190,6 +190,26 @@ class Tidal(BaseConfig, metaclass=SingletonMeta):
return True
def validate_session(self) -> bool:
"""Validate that the TIDAL session is still authenticated.
Returns:
bool: True if session is valid, False otherwise.
"""
return self.session.check_login()
def is_authentication_error(self, error: Exception) -> bool:
"""Check if an error is related to authentication/OAuth issues.
Args:
error (Exception): The exception to check.
Returns:
bool: True if the error is authentication-related, False otherwise.
"""
error_msg = str(error)
return "401" in error_msg or "OAuth" in error_msg or "token" in error_msg.lower()
class HandlingApp(metaclass=SingletonMeta):
event_abort: Event = Event()