diff --git a/lib/services/sourced_track/sourced_track.dart b/lib/services/sourced_track/sourced_track.dart index d2dd6f59..3ceafbf7 100644 --- a/lib/services/sourced_track/sourced_track.dart +++ b/lib/services/sourced_track/sourced_track.dart @@ -113,7 +113,6 @@ abstract class SourcedTrack extends Track { await JioSaavnSourcedTrack.fetchFromTrack(track: track, ref: ref), }; } catch (e) { - print("Got error: $e"); return YoutubeSourcedTrack.fetchFromTrack(track: track, ref: ref); } } diff --git a/lib/services/sourced_track/sources/jiosaavn.dart b/lib/services/sourced_track/sources/jiosaavn.dart index b25eca3b..01c041ad 100644 --- a/lib/services/sourced_track/sources/jiosaavn.dart +++ b/lib/services/sourced_track/sources/jiosaavn.dart @@ -111,7 +111,24 @@ class JioSaavnSourcedTrack extends SourcedTrack { final SongSearchResponse(:results) = await jiosaavnClient.search.songs(query, limit: 20); - return results.map(toSiblingType).toList(); + final trackArtistNames = track.artists?.map((ar) => ar.name).toList(); + return results + .where( + (s) { + final sameName = s.name?.replaceAll("&", "&") == track.name; + final artistNames = + "${s.primaryArtists}${s.featuredArtists.isNotEmpty ? ", " : ""}${s.featuredArtists}" + .replaceAll("&", "&"); + final sameArtists = artistNames.split(", ").any( + (artist) => + trackArtistNames?.any((ar) => artist == ar) ?? false, + ); + + return sameName && sameArtists; + }, + ) + .map(toSiblingType) + .toList(); } @override