3 Commits
Author SHA1 Message Date
leoca c96d3eea10 fix: keep stream titles when playlist:edit saves the file
playlist:edit saved the playlist without the raw option, so every title
was rebuilt from the API channel name and country instead of being
written back as read. For a stream whose channel is not in the database,
that becomes "undefined (undefined)". playlist:format, playlist:update
and playlist:test already save with { public: false, raw: true }.
2026-10-17 13:40:28 +00:00
leoca 867591f3e2 fix: normalize playlist:validate file arguments
playlist:validate decides which streams belong to the selected files by
comparing the raw command-line arguments with the paths returned by
Storage.list(). A path such as ./streams/us.m3u never matches
streams/us.m3u, so the file's own streams are put in the duplicate buffer
and every link is reported as already being in that same file.

Resolve the arguments with getStoragePath(), as playlist:format does.
2026-10-14 11:05:51 +00:00
leoca 783c4b5d5a fix: don't abort playlist:format on an unparseable .mpd response
getStreamInfo() already ignores .m3u8 responses that hls-parser cannot read, but the .mpd branch let parseManifest() throw. A stream URL ending in .mpd that answers 200 with an HTML page makes mpd-parser throw DASH_INVALID_XML, which rejects inside eachLimit and kills playlist:format before anything is saved. playlist:update hits the same path when adding a stream.
2026-10-14 01:06:34 +00:00