From 44af9a3bc3fc5d32ea826b70c1a07a21ca1e643e Mon Sep 17 00:00:00 2001 From: Pas <74743263+Pasithea0@users.noreply.github.com> Date: Mon, 21 Jul 2025 16:00:33 -0600 Subject: [PATCH] add support for variant playlists in data urls --- src/utils/playlist.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/utils/playlist.ts b/src/utils/playlist.ts index 2972bb1..d444e84 100644 --- a/src/utils/playlist.ts +++ b/src/utils/playlist.ts @@ -12,9 +12,22 @@ export async function convertPlaylistsToDataUrls( const playlist = parse(playlistData); if (playlist.isMasterPlaylist) { + // Extract base URL from the playlist URL for resolving relative variant URLs + const baseUrl = new URL(playlistUrl).origin; + await Promise.all( (playlist as MasterPlaylist).variants.map(async (variant) => { - const variantPlaylistData = await fetcher(variant.uri, { headers }); + // Resolve relative URLs against the base URL + let variantUrl = variant.uri; + if (!variantUrl.startsWith('http')) { + // Handle relative URLs - add leading slash if it doesn't exist + if (!variantUrl.startsWith('/')) { + variantUrl = `/${variantUrl}`; + } + variantUrl = baseUrl + variantUrl; + } + + const variantPlaylistData = await fetcher(variantUrl, { headers }); const variantPlaylist = parse(variantPlaylistData); variant.uri = `data:application/vnd.apple.mpegurl;base64,${btoa(stringify(variantPlaylist))}`; }),