diff --git a/DOCS/man/options.rst b/DOCS/man/options.rst index f35f43543f..526b2143fc 100644 --- a/DOCS/man/options.rst +++ b/DOCS/man/options.rst @@ -263,6 +263,11 @@ Playback Control includes special protocols and anything that doesn't refer to normal files. Local files and HTTP links on the other hand are always considered safe. + In addition, if a playlist is loaded while this is set, the added playlist + entries are not marked as originating from network or potentially unsafe + location. (Instead, the behavior is as if the playlist entries were provided + directly to mpv command line or ``loadfile`` command.) + Note that ``--playlist`` always loads all entries, so you use that instead if you really have the need for this functionality. diff --git a/player/loadfile.c b/player/loadfile.c index bb7365c641..fc3bb97a96 100644 --- a/player/loadfile.c +++ b/player/loadfile.c @@ -1429,7 +1429,7 @@ static void play_current_file(struct MPContext *mpctx) if (mpctx->demuxer->playlist) { struct playlist *pl = mpctx->demuxer->playlist; int entry_stream_flags = 0; - if (!pl->disable_safety) { + if (!pl->disable_safety && !mpctx->opts->load_unsafe_playlists) { entry_stream_flags = STREAM_SAFE_ONLY; if (mpctx->demuxer->is_network) entry_stream_flags |= STREAM_NETWORK_ONLY; diff --git a/player/lua/ytdl_hook.lua b/player/lua/ytdl_hook.lua index 9dd1dc34c9..bc5c242907 100644 --- a/player/lua/ytdl_hook.lua +++ b/player/lua/ytdl_hook.lua @@ -644,6 +644,12 @@ function run_ytdl_hook(url) end mp.set_property("stream-open-filename", "memory://" .. table.concat(playlist, "\n")) + + -- This disables mpv's mushy playlist security code, which will + -- break links that will be resolved to EDL later (because EDL is + -- not considered "safe", and the playlist entries got tagged as + -- network originating due to the playlist redirection). + mp.set_property_native("file-local-options/load-unsafe-playlists", true) end else -- probably a video