Add Discogs to Settings connections and rate monitor
- New Discogs section on Settings → Connections with personal token input - Discogs added as fallback metadata source option alongside iTunes/Deezer - Token saved to discogs.token config key - Discogs added to API rate monitor gauges (60/min with auth) - Help text links to discogs.com/settings/developers for token generation
This commit is contained in:
parent
c787d56500
commit
44a8be4469
4 changed files with 31 additions and 6 deletions
|
|
@ -22,6 +22,7 @@ RATE_LIMITS = {
|
|||
'audiodb': 30, # MIN_API_INTERVAL=2.0s → ~30/min
|
||||
'tidal': 120, # MIN_API_INTERVAL=0.5s → ~120/min
|
||||
'qobuz': 60, # Variable throttle, ~60/min estimate
|
||||
'discogs': 60, # MIN_API_INTERVAL=1.0s with auth → ~60/min
|
||||
}
|
||||
|
||||
# Display names for UI
|
||||
|
|
@ -35,12 +36,13 @@ SERVICE_LABELS = {
|
|||
'audiodb': 'AudioDB',
|
||||
'tidal': 'Tidal',
|
||||
'qobuz': 'Qobuz',
|
||||
'discogs': 'Discogs',
|
||||
}
|
||||
|
||||
# Display order
|
||||
SERVICE_ORDER = [
|
||||
'spotify', 'itunes', 'deezer', 'lastfm', 'genius',
|
||||
'musicbrainz', 'audiodb', 'tidal', 'qobuz',
|
||||
'musicbrainz', 'audiodb', 'tidal', 'qobuz', 'discogs',
|
||||
]
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -4825,7 +4825,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', 'tidal_download', 'qobuz', 'hifi_download', 'deezer_download', 'listenbrainz', 'acoustid', 'lastfm', 'genius', 'import', 'lossy_copy', 'listening_stats', 'ui_appearance', 'youtube', 'content_filter', 'itunes', 'm3u_export', 'musicbrainz', 'deezer', 'audiodb', 'metadata', 'hydrabase', 'security']:
|
||||
for service in ['spotify', 'plex', 'jellyfin', 'navidrome', 'soulseek', 'download_source', 'settings', 'database', 'metadata_enhancement', 'file_organization', 'playlist_sync', 'tidal', 'tidal_download', 'qobuz', 'hifi_download', 'deezer_download', 'listenbrainz', 'acoustid', 'lastfm', 'genius', 'import', 'lossy_copy', 'listening_stats', 'ui_appearance', 'youtube', 'content_filter', 'itunes', 'm3u_export', 'musicbrainz', 'deezer', 'audiodb', 'metadata', 'hydrabase', 'security', 'discogs']:
|
||||
if service in new_settings:
|
||||
for key, value in new_settings[service].items():
|
||||
config_manager.set(f'{service}.{key}', value)
|
||||
|
|
|
|||
|
|
@ -4002,6 +4002,22 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Discogs Settings -->
|
||||
<div class="api-service-frame">
|
||||
<h4 class="service-title" style="color: #333;">Discogs</h4>
|
||||
<div class="form-group">
|
||||
<label>Personal Access Token:</label>
|
||||
<input type="password" id="discogs-token"
|
||||
placeholder="Discogs Personal Access Token">
|
||||
</div>
|
||||
<div class="callback-info">
|
||||
<div class="callback-help">Get your free token from <a
|
||||
href="https://www.discogs.com/settings/developers" target="_blank"
|
||||
style="color: #ffff64;">Discogs Developer Settings</a></div>
|
||||
<div class="callback-help">Click "Generate new token" — no app registration needed. Provides 60 req/min and cover art in search results.</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Metadata Source Selection -->
|
||||
<div class="api-service-frame">
|
||||
<h4 class="service-title" style="color: #e8e8e8;">Metadata Source</h4>
|
||||
|
|
@ -4010,10 +4026,11 @@
|
|||
<select id="metadata-fallback-source">
|
||||
<option value="itunes">iTunes / Apple Music</option>
|
||||
<option value="deezer">Deezer</option>
|
||||
<option value="discogs">Discogs</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="callback-info">
|
||||
<div class="callback-help">When Spotify is not connected, this source provides artist, album, and track metadata. Hydrabase requires a connection configured above.</div>
|
||||
<div class="callback-help">When Spotify is not connected, this source provides artist, album, and track metadata. Discogs requires a personal token configured above.</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -5744,6 +5744,9 @@ async function loadSettingsData() {
|
|||
// Populate iTunes settings
|
||||
document.getElementById('itunes-country').value = settings.itunes?.country || 'US';
|
||||
|
||||
// Populate Discogs settings
|
||||
document.getElementById('discogs-token').value = settings.discogs?.token || '';
|
||||
|
||||
// Populate Metadata source setting
|
||||
document.getElementById('metadata-fallback-source').value = settings.metadata?.fallback_source || 'itunes';
|
||||
|
||||
|
|
@ -6802,6 +6805,9 @@ async function saveSettings(quiet = false) {
|
|||
embed_tags: document.getElementById('embed-itunes').checked,
|
||||
tags: _collectServiceTags('itunes')
|
||||
},
|
||||
discogs: {
|
||||
token: document.getElementById('discogs-token').value,
|
||||
},
|
||||
metadata: {
|
||||
fallback_source: document.getElementById('metadata-fallback-source').value || 'itunes'
|
||||
},
|
||||
|
|
@ -37701,17 +37707,17 @@ function renderEnrichmentCards(enrichment) {
|
|||
const _rateMonitorState = {};
|
||||
const _RATE_GAUGE_SERVICES = [
|
||||
'spotify', 'itunes', 'deezer', 'lastfm', 'genius',
|
||||
'musicbrainz', 'audiodb', 'tidal', 'qobuz',
|
||||
'musicbrainz', 'audiodb', 'tidal', 'qobuz', 'discogs',
|
||||
];
|
||||
const _RATE_GAUGE_LABELS = {
|
||||
spotify: 'Spotify', itunes: 'Apple Music', deezer: 'Deezer',
|
||||
lastfm: 'Last.fm', genius: 'Genius', musicbrainz: 'MusicBrainz',
|
||||
audiodb: 'AudioDB', tidal: 'Tidal', qobuz: 'Qobuz',
|
||||
audiodb: 'AudioDB', tidal: 'Tidal', qobuz: 'Qobuz', discogs: 'Discogs',
|
||||
};
|
||||
const _RATE_GAUGE_COLORS = {
|
||||
spotify: '#1DB954', itunes: '#FC3C44', deezer: '#A238FF',
|
||||
lastfm: '#D51007', genius: '#FFFF64', musicbrainz: '#BA478F',
|
||||
audiodb: '#00BCD4', tidal: '#00FFFF', qobuz: '#FF6B35',
|
||||
audiodb: '#00BCD4', tidal: '#00FFFF', qobuz: '#FF6B35', discogs: '#333333',
|
||||
};
|
||||
|
||||
// SVG constants — 240° arc, gap at bottom
|
||||
|
|
|
|||
Loading…
Reference in a new issue