add support for variant playlists in data urls

This commit is contained in:
Pas 2025-07-21 16:00:33 -06:00
parent 56198be0c9
commit 44af9a3bc3

View file

@ -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))}`;
}),