WIP: fix public playlists

This commit is contained in:
Julien Maille 2026-02-03 22:48:21 +01:00
parent 91e2e7b3cb
commit bd7f77a103

View file

@ -98,6 +98,24 @@ const syncManager = {
}); });
return JSON.parse(recovered); return JSON.parse(recovered);
} catch { } catch {
try {
// Python-style fallback (Single quotes, True/False, None)
// This handles data that was incorrectly serialized as Python repr string
if (str.includes("'") || str.includes('True') || str.includes('False')) {
const jsFriendly = str
.replace(/\bTrue\b/g, 'true')
.replace(/\bFalse\b/g, 'false')
.replace(/\bNone\b/g, 'null');
// Basic safety check: ensure it looks like a structure and doesn't contain obvious code vectors
if ((jsFriendly.trim().startsWith('[') || jsFriendly.trim().startsWith('{')) &&
!jsFriendly.match(/function|=>|window|document|alert|eval/)) {
return (new Function('return ' + jsFriendly))();
}
}
} catch (e) {
// Ignore fallback error
}
return fallback; return fallback;
} }
} }
@ -361,7 +379,7 @@ const syncManager = {
image: playlist.cover, image: playlist.cover,
cover: playlist.cover, cover: playlist.cover,
playlist_cover: playlist.cover, playlist_cover: playlist.cover,
tracks: playlist.tracks, tracks: JSON.stringify(playlist.tracks || []),
isPublic: true, isPublic: true,
data: { data: {
title: playlist.name, title: playlist.name,