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

Marvin Scholz epirat07 at gmail.com
Mon Sep 21 10:30:36 CEST 2020



On 21 Sep 2020, at 10:22, Steve Lhomme wrote:

> 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 ?

Checking it in configure.ac seems useless as this is about the host 
system, not a build time requirement.
If the library is not there or its the wrong version so API does not 
match, it the script would just fail
which IIUC is handled properly by the access module calling the script.

> Can it be part of contribs ?

Could be possible, but IMO out of scope of this patchset.

> Should we run python with out local environment with our little set of 
> dependencies ?

Why would you want to do that? I dont really see any benefit doing so 
while possibly
breaking the import.

> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel


More information about the vlc-devel mailing list