[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