diff --git a/core/itunes_client.py b/core/itunes_client.py index cbd570fd..53e57e52 100644 --- a/core/itunes_client.py +++ b/core/itunes_client.py @@ -68,6 +68,7 @@ class Track: preview_url: Optional[str] = None external_urls: Optional[Dict[str, str]] = None image_url: Optional[str] = None + release_date: Optional[str] = None @classmethod def from_itunes_track(cls, track_data: Dict[str, Any], clean_artist_name: Optional[str] = None) -> 'Track': @@ -97,7 +98,8 @@ class Track: popularity=0, # iTunes doesn't provide popularity preview_url=track_data.get('previewUrl'), external_urls=external_urls if external_urls else None, - image_url=album_image_url + image_url=album_image_url, + release_date=track_data.get('releaseDate', '').split('T')[0] if track_data.get('releaseDate') else None ) @dataclass diff --git a/core/spotify_client.py b/core/spotify_client.py index 13f5128a..1141be95 100644 --- a/core/spotify_client.py +++ b/core/spotify_client.py @@ -85,6 +85,7 @@ class Track: preview_url: Optional[str] = None external_urls: Optional[Dict[str, str]] = None image_url: Optional[str] = None + release_date: Optional[str] = None @classmethod def from_spotify_track(cls, track_data: Dict[str, Any]) -> 'Track': @@ -105,7 +106,8 @@ class Track: popularity=track_data.get('popularity', 0), preview_url=track_data.get('preview_url'), external_urls=track_data.get('external_urls'), - image_url=album_image_url + image_url=album_image_url, + release_date=track_data.get('album', {}).get('release_date') ) @dataclass diff --git a/database/music_library.db-shm b/database/music_library.db-shm deleted file mode 100644 index 2dca81bb..00000000 Binary files a/database/music_library.db-shm and /dev/null differ diff --git a/database/music_library.db-wal b/database/music_library.db-wal deleted file mode 100644 index 4dba5675..00000000 Binary files a/database/music_library.db-wal and /dev/null differ diff --git a/web_server.py b/web_server.py index b0b00321..f0199731 100644 --- a/web_server.py +++ b/web_server.py @@ -4022,7 +4022,8 @@ def enhanced_search(): "artist": artist_name, "album": track.album, "duration_ms": track.duration_ms, - "image_url": track.image_url + "image_url": track.image_url, + "release_date": track.release_date }) logger.info(f"Enhanced search results: {len(db_artists)} DB artists, {len(spotify_artists)} Spotify artists, {len(spotify_albums)} albums, {len(spotify_tracks)} tracks") diff --git a/webui/static/script.js b/webui/static/script.js index 21fa2ea2..a2f176a0 100644 --- a/webui/static/script.js +++ b/webui/static/script.js @@ -3493,7 +3493,7 @@ function initializeSearchModeToggle() { id: null, album_type: 'single', images: track.image_url ? [{ url: track.image_url }] : [], - release_date: null, + release_date: track.release_date || null, total_tracks: 1 }, duration_ms: track.duration_ms, @@ -3520,7 +3520,7 @@ function initializeSearchModeToggle() { id: null, album_type: 'single', images: track.image_url ? [{ url: track.image_url }] : [], - release_date: null, + release_date: track.release_date || null, total_tracks: 1, artists: [{ name: track.artist }] }; @@ -7940,8 +7940,8 @@ async function startMissingTracksProcess(playlistId) { }; // If this is an artist album download, use album name and include full context - // Match 'artist_album_', 'enhanced_search_album_', 'discover_album_', and 'seasonal_album_' prefixes - if (playlistId.startsWith('artist_album_') || playlistId.startsWith('enhanced_search_album_') || playlistId.startsWith('discover_album_') || playlistId.startsWith('seasonal_album_')) { + // Match 'artist_album_', 'enhanced_search_album_', 'enhanced_search_track_', 'discover_album_', and 'seasonal_album_' prefixes + if (playlistId.startsWith('artist_album_') || playlistId.startsWith('enhanced_search_album_') || playlistId.startsWith('enhanced_search_track_') || playlistId.startsWith('discover_album_') || playlistId.startsWith('seasonal_album_')) { requestBody.playlist_name = process.album?.name || process.playlist.name; requestBody.is_album_download = true; requestBody.album_context = process.album; // Full Spotify album object