include acoustID in settings page. foundation for verification flow

pull/130/head
Broque Thomas 3 months ago
parent cee5590718
commit fa808e5bba

@ -2329,7 +2329,7 @@ def handle_settings():
if 'active_media_server' in new_settings:
config_manager.set_active_media_server(new_settings['active_media_server'])
for service in ['spotify', 'plex', 'jellyfin', 'navidrome', 'soulseek', 'download_source', 'settings', 'database', 'metadata_enhancement', 'file_organization', 'playlist_sync', 'tidal', 'listenbrainz']:
for service in ['spotify', 'plex', 'jellyfin', 'navidrome', 'soulseek', 'download_source', 'settings', 'database', 'metadata_enhancement', 'file_organization', 'playlist_sync', 'tidal', 'listenbrainz', 'acoustid']:
if service in new_settings:
for key, value in new_settings[service].items():
config_manager.set(f'{service}.{key}', value)

@ -2618,6 +2618,26 @@
</div>
</div>
<!-- AcoustID Settings -->
<div class="api-service-frame">
<h4 class="service-title acoustid-title">AcoustID</h4>
<div class="form-group">
<label>API Key:</label>
<input type="password" id="acoustid-api-key"
placeholder="AcoustID API Key (Optional)">
</div>
<div class="callback-info">
<div class="callback-help">Get your free API key from <a
href="https://acoustid.org/new-application" target="_blank"
style="color: #ba55d3;">AcoustID Applications</a></div>
<div class="callback-help"
style="opacity: 0.7; font-size: 0.85em; margin-top: 4px;">
Optional: Enables audio fingerprint verification of downloads. If not
provided, verification is skipped.
</div>
</div>
</div>
<!-- Test Connection Buttons -->
<div class="api-test-buttons">
<button class="test-button" onclick="testConnection('spotify')">Test

@ -1677,6 +1677,9 @@ async function loadSettingsData() {
// Populate ListenBrainz settings
document.getElementById('listenbrainz-token').value = settings.listenbrainz?.token || '';
// Populate AcoustID settings
document.getElementById('acoustid-api-key').value = settings.acoustid?.api_key || '';
// Populate Download settings (right column)
document.getElementById('download-path').value = settings.soulseek?.download_path || './downloads';
document.getElementById('transfer-path').value = settings.soulseek?.transfer_path || './Transfer';
@ -2075,6 +2078,9 @@ async function saveSettings() {
listenbrainz: {
token: document.getElementById('listenbrainz-token').value
},
acoustid: {
api_key: document.getElementById('acoustid-api-key').value
},
download_source: {
mode: document.getElementById('download-source-mode').value,
hybrid_primary: document.getElementById('hybrid-primary-source').value,

@ -1106,6 +1106,10 @@ body {
color: #eb743b;
}
.acoustid-title {
color: #ba55d3;
}
/* Server Toggle Buttons */
.server-toggle-container {
display: flex;

Loading…
Cancel
Save