Fix missing year and track numbers when Deezer metadata cache is stale
Root cause: search_albums cached album data without release_date or
track_position. get_album_metadata accepted this incomplete cache hit
(only checked for title), never called the full API. Result: year
empty, all tracks numbered 01.
Fix: get_album_metadata now requires release_date in cache to use it.
Search results without release_date trigger a fresh /album/{id} API
call which returns complete data. Also improved track_number fallback
in download context builder when Spotify isn't configured.
This commit is contained in:
parent
a0b2fa9441
commit
cab12b61a6
2 changed files with 8 additions and 3 deletions
|
|
@ -423,11 +423,16 @@ class DeezerClient:
|
|||
is get_album_raw() (used by deezer_worker.py)."""
|
||||
cache = get_metadata_cache()
|
||||
cached = cache.get_entity('deezer', 'album', str(album_id))
|
||||
if cached and cached.get('title'):
|
||||
# Only use cache if it has full album data (release_date indicates full API response,
|
||||
# not just a search result which lacks release_date and track details)
|
||||
if cached and cached.get('title') and cached.get('release_date'):
|
||||
return self._build_album_result(cached, album_id, include_tracks)
|
||||
|
||||
data = self._api_get(f'album/{album_id}')
|
||||
if not data:
|
||||
# Fall back to cached if API fails
|
||||
if cached and cached.get('title'):
|
||||
return self._build_album_result(cached, album_id, include_tracks)
|
||||
return None
|
||||
|
||||
cache.store_entity('deezer', 'album', str(album_id), data)
|
||||
|
|
|
|||
|
|
@ -24581,8 +24581,8 @@ def _attempt_download_with_candidates(task_id, candidates, track, batch_id=None)
|
|||
enhanced_payload['disc_number'] = track_info.get('disc_number', 1)
|
||||
print(f"⚠️ [Context] No track_number in detailed_track, using track_info fallback: {enhanced_payload['track_number']}")
|
||||
except Exception as e:
|
||||
enhanced_payload['track_number'] = track_info.get('track_number', 1)
|
||||
enhanced_payload['disc_number'] = track_info.get('disc_number', 1)
|
||||
enhanced_payload['track_number'] = track_info.get('track_number') or track.track_number if hasattr(track, 'track_number') else 0
|
||||
enhanced_payload['disc_number'] = track_info.get('disc_number') or track.disc_number if hasattr(track, 'disc_number') else 1
|
||||
print(f"❌ [Context] Error getting track_number, using track_info fallback: {enhanced_payload['track_number']} ({e})")
|
||||
else:
|
||||
enhanced_payload['track_number'] = track_info.get('track_number', 1)
|
||||
|
|
|
|||
Loading…
Reference in a new issue