[vlc-commits] [Git][videolan/vlc][master] demux: add YT-DLP module path argument
Steve Lhomme (@robUx4)
gitlab at videolan.org
Sat Nov 1 02:38:23 UTC 2025
Steve Lhomme pushed to branch master at VideoLAN / VLC
Commits:
81cda618 by Brandon Li at 2025-11-01T02:38:09+00:00
demux: add YT-DLP module path argument
- - - - -
2 changed files:
- modules/demux/ytdl.c
- share/ytdl-extract.py
Changes:
=====================================
modules/demux/ytdl.c
=====================================
@@ -353,7 +353,16 @@ static int OpenCommon(vlc_object_t *obj)
struct ytdl_json jsdata;
pid_t pid;
- const char *argv[] = { path, s->psz_url, NULL };
+ char *py_path = var_InheritString(obj, "ytdl-path");
+ const char *argv[5];
+ size_t i = 0;
+ argv[i++] = path;
+ if (py_path != NULL && py_path[0] != '\0') {
+ argv[i++] = "--py-path"; // add additional path
+ argv[i++] = py_path;
+ }
+ argv[i++] = s->psz_url;
+ argv[i] = NULL;
jsdata.logger = s->obj.logger;
jsdata.fd = ytdl_popen(&pid, argv);
@@ -361,10 +370,11 @@ static int OpenCommon(vlc_object_t *obj)
if (jsdata.fd == -1) {
msg_Dbg(obj, "cannot start %s: %s", path, vlc_strerror_c(errno));
free(path);
+ free(py_path);
return VLC_EGENERIC;
}
-
free(path);
+ free(py_path);
int val = json_parse(&jsdata, &sys->json);
@@ -442,7 +452,7 @@ vlc_module_begin()
set_callbacks(OpenFilter, Close)
add_bool("ytdl", true, N_("Enable YT-DL"), NULL)
change_safe()
-
+ add_directory("ytdl-path", NULL, N_("YT-DL Module Path"), NULL)
add_submodule()
set_capability("access", 0)
add_shortcut("ytdl")
=====================================
share/ytdl-extract.py
=====================================
@@ -1,6 +1,6 @@
#! /usr/bin/python3
#
-# Copyright (C) 2020 Rémi Denis-Courmont
+# Copyright (C) 2020 Rémi Denis-Courmont, Brandon Li
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
@@ -17,8 +17,20 @@
# Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
import sys
+import os
import json
import urllib.parse
+import argparse
+
+# Parse first so we can set sys.path
+parser = argparse.ArgumentParser(add_help=False)
+parser.add_argument('--py-path', dest='py_path')
+parser.add_argument('url')
+args, _ = parser.parse_known_args()
+
+if args.py_path:
+ sys.path.insert(0, args.py_path)
+
import yt_dlp
class logger(object):
@@ -63,13 +75,13 @@ def url_process(ie_url):
# Rebuild the original IE entry
entry = { }
- for p in urllib.parse.parse_qsl(url[9:]):
+ for p in urllib.parse.parse_qsl(ie_url[9:]): # <-- use parameter
entry[p[0]] = p[1]
infos = dl.process_ie_result(entry, download=False)
print(json.dumps(infos))
-url = sys.argv[1]
+url = args.url
if url.startswith('ytdl:///?'):
url_process(url)
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/81cda618161bdb7dab6e66d9d7f751b3777e2efc
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/81cda618161bdb7dab6e66d9d7f751b3777e2efc
You're receiving this email because of your account on code.videolan.org.
VideoLAN code repository instance
More information about the vlc-commits
mailing list