From 4d7c3b0ef002244b1f470fbe605ebe8909d7ad03 Mon Sep 17 00:00:00 2001 From: Tim Rae Date: Mon, 14 Oct 2024 01:18:09 +0200 Subject: [PATCH] Filter out tracks which don't have valid album metadata Apply a final sanity filter to tracklist to validate assumption in matching algorithm that the album has certain fields available. In most situations this filter is not necessary, but occasionally we do seem to encounter tracks that have no album metadata --- src/spotify_to_tidal/sync.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/spotify_to_tidal/sync.py b/src/spotify_to_tidal/sync.py index d1d3650..a60914f 100755 --- a/src/spotify_to_tidal/sync.py +++ b/src/spotify_to_tidal/sync.py @@ -184,7 +184,8 @@ async def get_tracks_from_spotify_playlist(spotify_session: spotipy.Spotify, spo print(f"Loading tracks from Spotify playlist '{spotify_playlist['name']}'") items = await repeat_on_request_error( _fetch_all_from_spotify_in_chunks, lambda offset: _get_tracks_from_spotify_playlist(offset=offset, playlist_id=spotify_playlist["id"])) track_filter = lambda item: item.get('type', 'track') == 'track' # type may be 'episode' also - return list(filter(track_filter, items)) + sanity_filter = lambda item: 'album' in item and 'name' in item['album'] and 'artists' in item['album'] and len(item['album']['artists']) > 0 + return list(filter(sanity_filter, filter(track_filter, items))) def populate_track_match_cache(spotify_tracks_: Sequence[t_spotify.SpotifyTrack], tidal_tracks_: Sequence[tidalapi.Track]): """ Populate the track match cache with all the existing tracks in Tidal playlist corresponding to Spotify playlist """