Add convertPlaylistsToDataUrls util

This commit is contained in:
TPN 2024-06-16 19:12:14 +05:30
parent d096bfadf1
commit f7c6165314
No known key found for this signature in database
GPG key ID: 40AE091637892B91

23
src/utils/playlist.ts Normal file
View file

@ -0,0 +1,23 @@
import { parse, stringify } from 'hls-parser';
import { MasterPlaylist } from 'hls-parser/types';
import { UseableFetcher } from '@/fetchers/types';
export async function convertPlaylistsToDataUrls(
fetcher: UseableFetcher,
playlistUrl: string,
headers?: Record<string, string>,
) {
const playlistData = await fetcher(playlistUrl, { headers });
const playlist = parse(playlistData);
if (playlist.isMasterPlaylist) {
for (const variant of (playlist as MasterPlaylist).variants) {
const variantPlaylistData = await fetcher(variant.uri, { headers });
const variantPlaylist = parse(variantPlaylistData);
variant.uri = `data:application/vnd.apple.mpegurl;base64,${btoa(stringify(variantPlaylist))}`;
}
}
return `data:application/vnd.apple.mpegurl;base64,${btoa(stringify(playlist))}`;
}