Fix $year template variable empty in playlist/sync downloads
The fallback download path (playlists, discovery, sync) built spotify_album_context from track_info.album which can be a plain string (no release_date) for discovery playlists or missing metadata. Now backfills release_date, album_type, total_tracks, and album name from the existing get_track_details API call — zero extra API calls. Also adds total_discs passthrough for fallback path parity.
This commit is contained in:
parent
31e9ff3385
commit
a62cc821ee
1 changed files with 18 additions and 1 deletions
|
|
@ -22348,7 +22348,8 @@ def _attempt_download_with_candidates(task_id, candidates, track, batch_id=None)
|
|||
'release_date': fallback_album.get('release_date', ''),
|
||||
'image_url': fallback_image_url,
|
||||
'album_type': fallback_album.get('album_type', 'album'),
|
||||
'total_tracks': fallback_album.get('total_tracks', 0)
|
||||
'total_tracks': fallback_album.get('total_tracks', 0),
|
||||
'total_discs': fallback_album.get('total_discs', 1)
|
||||
}
|
||||
|
||||
download_payload = candidate.__dict__
|
||||
|
|
@ -22402,6 +22403,22 @@ def _attempt_download_with_candidates(task_id, candidates, track, batch_id=None)
|
|||
enhanced_payload['track_number'] = detailed_track['track_number']
|
||||
enhanced_payload['disc_number'] = detailed_track.get('disc_number', 1)
|
||||
print(f"🔢 [Context] Added Spotify track_number: {detailed_track['track_number']}, disc_number: {enhanced_payload['disc_number']}")
|
||||
|
||||
# Backfill album metadata from detailed track when fallback path
|
||||
# produced incomplete data (e.g. album was a plain string from
|
||||
# discovery playlists, or release_date missing from track listing)
|
||||
if not has_explicit_context and isinstance(detailed_track.get('album'), dict):
|
||||
dt_album = detailed_track['album']
|
||||
if not spotify_album_context.get('release_date') and dt_album.get('release_date'):
|
||||
spotify_album_context['release_date'] = dt_album['release_date']
|
||||
print(f"📅 [Context] Backfilled release_date from Spotify API: {dt_album['release_date']}")
|
||||
if dt_album.get('album_type') and not fallback_album.get('album_type'):
|
||||
spotify_album_context['album_type'] = dt_album['album_type']
|
||||
if not spotify_album_context.get('total_tracks') and dt_album.get('total_tracks'):
|
||||
spotify_album_context['total_tracks'] = dt_album['total_tracks']
|
||||
if not spotify_album_context.get('name') or spotify_album_context['name'] == track.album:
|
||||
if dt_album.get('name'):
|
||||
spotify_album_context['name'] = dt_album['name']
|
||||
else:
|
||||
enhanced_payload['track_number'] = track_info.get('track_number', 1)
|
||||
enhanced_payload['disc_number'] = track_info.get('disc_number', 1)
|
||||
|
|
|
|||
Loading…
Reference in a new issue