fix: filter duplicate audio tracks

This commit is contained in:
Adrian Castro
2024-02-24 10:38:43 +01:00
parent a43cb420d5
commit 10858c6c8e

View File

@@ -113,27 +113,29 @@ export const ScraperProcess = ({ data }: ScraperProcessProps) => {
}; };
if (tracks?.audio.length) { if (tracks?.audio.length) {
const audioTracks: AudioTrack[] = tracks.audio const audioTracks: AudioTrack[] = tracks.audio.map((track) => ({
.map((track) => ({ uri: constructFullUrl(
uri: constructFullUrl( (streamResult.stream as HlsBasedStream).playlist,
(streamResult.stream as HlsBasedStream).playlist, track.uri,
track.uri, ),
), name: (track.properties[0]?.attributes.name as string) ?? "Unknown",
name: language:
(track.properties[0]?.attributes.name as string) ?? "Unknown", (track.properties[0]?.attributes.language as string) ?? "Unknown",
language: active:
(track.properties[0]?.attributes.language as string) ?? (track.properties[0]?.attributes.default as boolean) ?? false,
"Unknown", }));
active:
(track.properties[0]?.attributes.default as boolean) ?? false, const uniqueTracks = new Set(audioTracks.map((t) => t.language));
}))
.filter((track, index, self) => { const filteredAudioTracks = audioTracks.filter((track) => {
const trackUriSet = new Set(self.map((t) => t.uri)); if (uniqueTracks.has(track.language)) {
return ( uniqueTracks.delete(track.language);
!trackUriSet.has(track.uri) || trackUriSet.size === index + 1 return true;
); }
}); return false;
setAudioTracks(audioTracks); });
setAudioTracks(filteredAudioTracks);
} }
} }
setPlayerStatus(PlayerStatus.READY); setPlayerStatus(PlayerStatus.READY);