[vlc-devel] [PATCH 1/2] share: add wrapper script for the YoutubeDL Python module

Steve Lhomme robux4 at ycbcr.xyz
Mon Sep 21 10:22:44 CEST 2020


On 2020-09-20 20:57, Rémi Denis-Courmont wrote:
> This script generates a M3U playlist from a given URL, providing a
> simple serial format that can be read and parsed by another process.
> 
> There are in principles two other alternative ways to access it:
> 
> 1) Calling the YoutubeDL module directly in-process through CPython.
>     This poses a number of problems:
>     - CPython must be loaded by the main executable. Python modules will
>       fail to resolve their CPython symbols otherwise.
>     - Multiple CPython interpreters are still very immature; GIL behaves
>       weirdly. CPython is really not meant for multithread.
>     - The GIL prevents concurrent uses (that's the whole point of it).
>     - CPython network I/O cannot be interrupted by VLC interruptions, so
>       the calling thread may get stuck inside CPython.
>     - A build-time dependency on CPython is added.
> 
> 2) Parsing the output of the youtube-dl program. This is what MPV does.
>     But this requires a whole new parser for the Python syntax.
> 
> With a custom Python script, we can decide on the serialisation format
> that most suits the usage.
> ---
>   share/Makefile.am     |   2 +
>   share/ytdl-extract.py | 103 ++++++++++++++++++++++++++++++++++++++++++
>   2 files changed, 105 insertions(+)
>   create mode 100755 share/ytdl-extract.py
> 
> diff --git a/share/Makefile.am b/share/Makefile.am
> index 2373ffbe91..8a92f04360 100644
> --- a/share/Makefile.am
> +++ b/share/Makefile.am
> @@ -49,6 +49,8 @@ nobase_dist_pkgdata_SCRIPTS = \
>   	utils/audio-vlc-default.sh \
>   	utils/video-vlc-default.sh \
>   	$(NULL)
> +
> +dist_pkgdata_SCRIPTS = ytdl-extract.py
>   endif
>   
>   EXTRA_DIST += \
> diff --git a/share/ytdl-extract.py b/share/ytdl-extract.py
> new file mode 100755
> index 0000000000..2d784c5090
> --- /dev/null
> +++ b/share/ytdl-extract.py
> @@ -0,0 +1,103 @@
> +#! /usr/bin/python3
> +#
> +# Copyright (C) 2020 Rémi Denis-Courmont
> +#
> +# 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
> +# the Free Software Foundation; either version 2.1 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> +# GNU Lesser General Public License for more details.
> +#
> +# You should have received a copy of the GNU Lesser General Public License
> +# along with this program; if not, write to the Free Software Foundation,
> +# Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
> +
> +import sys
> +import youtube_dl

How does this work if the import library is not there ? Do we have 
requirements on the version of the library ? Can we check it in 
configure.ac ? Can it be part of contribs ? Should we run python with 
out local environment with our little set of dependencies ?


More information about the vlc-devel mailing list