fix: clamp negative alreadyOwned, map deezer track_id_col in seasonal endpoints
- Clamp alreadyOwned to Math.max(0, ...) in batch completion display to avoid showing negative owned count - Map active_source deezer to deezer_track_id in both seasonal playlist endpoints (current-playlist and curated), consistent with core/seasonal_discovery.py logic
This commit is contained in:
parent
5609efa1e9
commit
20cad61e4f
2 changed files with 15 additions and 8 deletions
|
|
@ -44407,9 +44407,13 @@ def get_current_seasonal_playlist():
|
||||||
return jsonify({"success": True, "tracks": []})
|
return jsonify({"success": True, "tracks": []})
|
||||||
|
|
||||||
# itunes stores IDs in itunes_track_id; all other sources
|
# itunes stores IDs in itunes_track_id; all other sources
|
||||||
# (spotify, deezer, discogs, hydrabase, etc.) use spotify_track_id
|
# Each source stores IDs in its own column
|
||||||
# as the generic ID column.
|
if active_source == 'itunes':
|
||||||
track_id_col = 'itunes_track_id' if active_source == 'itunes' else 'spotify_track_id'
|
track_id_col = 'itunes_track_id'
|
||||||
|
elif active_source == 'deezer':
|
||||||
|
track_id_col = 'deezer_track_id'
|
||||||
|
else:
|
||||||
|
track_id_col = 'spotify_track_id'
|
||||||
tracks = []
|
tracks = []
|
||||||
with database._get_connection() as conn:
|
with database._get_connection() as conn:
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
|
|
@ -44538,10 +44542,13 @@ def get_seasonal_playlist(season_key):
|
||||||
if not track_ids:
|
if not track_ids:
|
||||||
return jsonify({"success": True, "tracks": []})
|
return jsonify({"success": True, "tracks": []})
|
||||||
|
|
||||||
# itunes stores IDs in itunes_track_id; all other sources
|
# Each source stores IDs in its own column
|
||||||
# (spotify, deezer, discogs, hydrabase, etc.) use spotify_track_id
|
if active_source == 'itunes':
|
||||||
# as the generic ID column.
|
track_id_col = 'itunes_track_id'
|
||||||
track_id_col = 'itunes_track_id' if active_source == 'itunes' else 'spotify_track_id'
|
elif active_source == 'deezer':
|
||||||
|
track_id_col = 'deezer_track_id'
|
||||||
|
else:
|
||||||
|
track_id_col = 'spotify_track_id'
|
||||||
|
|
||||||
# Fetch track details from seasonal tracks or discovery pool (filtered by source)
|
# Fetch track details from seasonal tracks or discovery pool (filtered by source)
|
||||||
tracks = []
|
tracks = []
|
||||||
|
|
|
||||||
|
|
@ -2515,7 +2515,7 @@ function _adlRenderBatchPanel() {
|
||||||
if (batch.active > 0) phaseIcon = '<span class="adl-spinner" style="margin-right:4px"></span>';
|
if (batch.active > 0) phaseIcon = '<span class="adl-spinner" style="margin-right:4px"></span>';
|
||||||
} else if (batch.phase === 'complete') {
|
} else if (batch.phase === 'complete') {
|
||||||
const analysisTotal = batch.analysis_total || 0;
|
const analysisTotal = batch.analysis_total || 0;
|
||||||
const alreadyOwned = analysisTotal > 0 ? analysisTotal - total : 0;
|
const alreadyOwned = analysisTotal > 0 ? Math.max(0, analysisTotal - total) : 0;
|
||||||
let parts = [`${batch.completed} downloaded`];
|
let parts = [`${batch.completed} downloaded`];
|
||||||
if (alreadyOwned > 0) parts.push(`${alreadyOwned} owned`);
|
if (alreadyOwned > 0) parts.push(`${alreadyOwned} owned`);
|
||||||
if (batch.failed > 0) parts.push(`${batch.failed} failed`);
|
if (batch.failed > 0) parts.push(`${batch.failed} failed`);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue