diff --git a/core/spotify_client.py b/core/spotify_client.py index 7c04c23..cf4170d 100644 --- a/core/spotify_client.py +++ b/core/spotify_client.py @@ -172,7 +172,7 @@ class SpotifyClient: auth_manager = SpotifyOAuth( client_id=config['client_id'], client_secret=config['client_secret'], - redirect_uri="http://127.0.0.1:8888/callback", + redirect_uri=config.get('redirect_uri', "http://127.0.0.1:8888/callback"), scope="user-library-read user-read-private playlist-read-private playlist-read-collaborative user-read-email", cache_path='config/.spotify_cache' ) diff --git a/core/tidal_client.py b/core/tidal_client.py index 8723400..1689d27 100644 --- a/core/tidal_client.py +++ b/core/tidal_client.py @@ -98,7 +98,7 @@ class TidalClient: self.alt_base_url = "https://api.tidal.com/v1" # Alternative API base self.auth_url = "https://login.tidal.com/authorize" self.token_url = "https://auth.tidal.com/v1/oauth2/token" - self.redirect_uri = "http://127.0.0.1:8889/tidal/callback" + self.redirect_uri = "http://127.0.0.1:8889/tidal/callback" # Default, will be updated from config self.session = requests.Session() self.auth_server = None self.auth_code = None @@ -117,6 +117,7 @@ class TidalClient: tidal_config = config_manager.get('tidal', {}) self.client_id = tidal_config.get('client_id') self.client_secret = tidal_config.get('client_secret') + self.redirect_uri = tidal_config.get('redirect_uri', self.redirect_uri) # Use config or default if not self.client_id or not self.client_secret: logger.warning("Tidal client ID or secret not configured") diff --git a/web_server.py b/web_server.py index bfa37ba..4b3651a 100644 --- a/web_server.py +++ b/web_server.py @@ -11349,7 +11349,7 @@ def start_oauth_callback_servers(): auth_manager = SpotifyOAuth( client_id=config['client_id'], client_secret=config['client_secret'], - redirect_uri="http://127.0.0.1:8888/callback", + redirect_uri=config.get('redirect_uri', "http://127.0.0.1:8888/callback"), scope="user-library-read user-read-private playlist-read-private playlist-read-collaborative user-read-email", cache_path='config/.spotify_cache' ) diff --git a/webui/index.html b/webui/index.html index 9150d1c..4e28066 100644 --- a/webui/index.html +++ b/webui/index.html @@ -652,9 +652,13 @@ +
+ + +
-
Required Redirect URI:
-
http://127.0.0.1:8888/callback
+
Current Redirect URI:
+
http://127.0.0.1:8888/callback
Add this URL to your Spotify app's 'Redirect URIs' in the Spotify Developer Dashboard
@@ -673,9 +677,13 @@
+
+ + +
-
Required Redirect URI:
-
http://127.0.0.1:8889/tidal/callback
+
Current Redirect URI:
+
http://127.0.0.1:8889/tidal/callback
Add this URL to your Tidal app configuration
diff --git a/webui/static/script.js b/webui/static/script.js index 4b49f4c..78e4d8f 100644 --- a/webui/static/script.js +++ b/webui/static/script.js @@ -1347,10 +1347,23 @@ async function loadSettingsData() { // Populate Spotify settings document.getElementById('spotify-client-id').value = settings.spotify?.client_id || ''; document.getElementById('spotify-client-secret').value = settings.spotify?.client_secret || ''; + document.getElementById('spotify-redirect-uri').value = settings.spotify?.redirect_uri || 'http://127.0.0.1:8888/callback'; + document.getElementById('spotify-callback-display').textContent = settings.spotify?.redirect_uri || 'http://127.0.0.1:8888/callback'; // Populate Tidal settings document.getElementById('tidal-client-id').value = settings.tidal?.client_id || ''; document.getElementById('tidal-client-secret').value = settings.tidal?.client_secret || ''; + document.getElementById('tidal-redirect-uri').value = settings.tidal?.redirect_uri || 'http://127.0.0.1:8889/tidal/callback'; + document.getElementById('tidal-callback-display').textContent = settings.tidal?.redirect_uri || 'http://127.0.0.1:8889/tidal/callback'; + + // Add event listeners to update display URLs when input changes + document.getElementById('spotify-redirect-uri').addEventListener('input', function() { + document.getElementById('spotify-callback-display').textContent = this.value || 'http://127.0.0.1:8888/callback'; + }); + + document.getElementById('tidal-redirect-uri').addEventListener('input', function() { + document.getElementById('tidal-callback-display').textContent = this.value || 'http://127.0.0.1:8889/tidal/callback'; + }); // Populate Plex settings document.getElementById('plex-url').value = settings.plex?.base_url || ''; @@ -1426,11 +1439,13 @@ async function saveSettings() { active_media_server: activeServer, spotify: { client_id: document.getElementById('spotify-client-id').value, - client_secret: document.getElementById('spotify-client-secret').value + client_secret: document.getElementById('spotify-client-secret').value, + redirect_uri: document.getElementById('spotify-redirect-uri').value }, tidal: { client_id: document.getElementById('tidal-client-id').value, - client_secret: document.getElementById('tidal-client-secret').value + client_secret: document.getElementById('tidal-client-secret').value, + redirect_uri: document.getElementById('tidal-redirect-uri').value }, plex: { base_url: document.getElementById('plex-url').value,