From 98aff8f3b94af6d1d3137df8aee36b9e8d5007f9 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Tue, 21 Nov 2023 23:13:57 +0600 Subject: [PATCH] chore: fix jiosaavn exact match --- lib/services/sourced_track/sourced_track.dart | 1 - .../sourced_track/sources/jiosaavn.dart | 19 ++++++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) 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