Fix Tidal token refresh hammering when client credentials removed

Skip refresh attempt if client_id/secret not configured — clears stale
tokens to stop retry loop permanently. Add 5-minute backoff after
failed refresh to prevent hammering Tidal API every 2 seconds.
pull/253/head
Broque Thomas 2 months ago
parent e97dc8f86a
commit 67db796958

@ -406,6 +406,14 @@ class TidalClient:
if not self.refresh_token:
logger.error("No Tidal refresh token available")
return False
if not self.client_id or not self.client_secret:
logger.debug("Tidal client_id/secret not configured — skipping token refresh")
# Clear stale tokens so we stop retrying
self.access_token = None
self.refresh_token = None
self.token_expires_at = 0
return False
data = {
'grant_type': 'refresh_token',
@ -493,10 +501,18 @@ class TidalClient:
if self.access_token and time.time() < self.token_expires_at:
return True
# Backoff: if refresh recently failed, don't retry for 5 minutes
if hasattr(self, '_refresh_failed_at') and self._refresh_failed_at:
if time.time() - self._refresh_failed_at < 300:
return False
# Token expired but refresh token available — try silent refresh
if self.access_token and self.refresh_token:
logger.info("Tidal access token expired — attempting silent refresh...")
return self._refresh_access_token()
result = self._refresh_access_token()
if not result:
self._refresh_failed_at = time.time()
return result
return False

Loading…
Cancel
Save