chore: fix jiosaavn exact match

This commit is contained in:
Kingkor Roy Tirtho 2023-11-21 23:13:57 +06:00
parent dcbb156833
commit 98aff8f3b9
2 changed files with 18 additions and 2 deletions

View File

@ -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);
}
}

View File

@ -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