mirror of
https://github.com/sussy-code/providers.git
synced 2026-04-18 23:22:09 +00:00
25 lines
870 B
TypeScript
25 lines
870 B
TypeScript
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) {
|
|
await Promise.all(
|
|
(playlist as MasterPlaylist).variants.map(async (variant) => {
|
|
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))}`;
|
|
}
|