From f7c61653140067471589e337dc63a35f4ebe0e8f Mon Sep 17 00:00:00 2001 From: TPN Date: Sun, 16 Jun 2024 19:12:14 +0530 Subject: [PATCH] Add convertPlaylistsToDataUrls util --- src/utils/playlist.ts | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/utils/playlist.ts diff --git a/src/utils/playlist.ts b/src/utils/playlist.ts new file mode 100644 index 0000000..c315d52 --- /dev/null +++ b/src/utils/playlist.ts @@ -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, +) { + 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))}`; +}