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

Rémi Denis-Courmont remi at remlab.net
Tue Sep 22 10:04:15 CEST 2020


Marvin already explained to you that it just fails safe on error.

Le 22 septembre 2020 10:30:28 GMT+03:00, Steve Lhomme <robux4 at ycbcr.xyz> a écrit :
>On 2020-09-22 9:16, Rémi Denis-Courmont wrote:
>> Hi,
>> 
>> No. That question was already addressed in more details in the first 
>> review thread.
>
>I read it and I read it again. I found nothing that talks about error 
>handling in this script. So either point to the answer or provide an 
>answer. Thanks.
>
>> Le 22 septembre 2020 08:35:04 GMT+03:00, Steve Lhomme
><robux4 at ycbcr.xyz> 
>> a écrit :
>> 
>>         diff --git a/share/ytdl-extract.py b/share/ytdl-extract.py
>>         new file mode 100755
>>         index 0000000000..71c79e0156
>>         --- /dev/null
>>         +++ b/share/ytdl-extract.py
>>         @@ -0,0 +1,102 @@
>>         +#! /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
>>         +
>>         +class logger(object):
>>         + def debug(self, msg):
>>         + pass
>>         +
>>         + def warning(self, msg):
>>         + pass
>>         +
>>         + def error(self, msg):
>>         + sys.stderr.write(msg)
>>         +
>>         +def formats_choose_best(fmts):
>>         + # Pick our preferred format out of many
>>         + best_abr = -1
>>         + best_height = -1
>>         + best_format = None
>>         +
>>         + for f in fmts:
>>         + if 'height' in f and f['height']:
>>         + height = f['height']
>>         + else:
>>         + height = 0
>>         +
>>         + if height < best_height:
>>         + continue
>>         +
>>         + if 'abr' in f and f['abr']:
>>         + abr = f['abr']
>>         + else:
>>         + abr = 0
>>         +
>>         + if height == best_height or abr < best_abr:
>>         + continue
>>         +
>>         + best_abr = abr
>>         + best_height = height
>>         + best_format = f
>>         +
>>         + return best_format
>>         +
>>         +def entry_extract(entry):
>>         + # Process a given entry of a playlist
>>         + if 'formats' in entry:
>>         + fmt = formats_choose_best(entry['formats'])
>>         + else:
>>         + fmt = entry
>>         +
>>         + if 'title' in entry:
>>         + print('#EXTINF:,,' + entry['title'].splitlines()[0])
>>         +
>>         + if 'url' in fmt:
>>         + print('#EXTVLCOPT:no-ytdl') # don't parse recursively
>>         + print(fmt['url'])
>>         + else:
>>         + print('vlc://nop')
>>         +
>>         +def url_extract(url):
>>         + opts = {
>>         + 'logger': logger(),
>>         + }
>>         +
>>         + dl = youtube_dl.YoutubeDL(opts)
>>         + #dl.add_default_info_extractors()
>>         +
>>         + # Process a given URL
>>         + infos = dl.extract_info(url, download=False)
>> 
>> 
>>     What happens if there's an error here ? Should the
>function/script
>>     return an error rather than an empty M3U ?
>> 
>>         +
>>         + print('#EXTM3U')
>>         +
>>         + if 'title' in infos:
>>         + print('#PLAYLIST:' + infos['title'].splitlines()[0])
>>         +
>>         + if 'entries' in infos:
>>         + # URL is a playlist: iterate over entries
>>         + for entry in infos['entries']:
>>         + entry_extract(entry)
>>         + else:
>>         + # URL is a single media
>>         + entry_extract(infos)
>>         +
>>         +
>>         +url_extract(sys.argv[1])
>>         -- 
>>         2.28.0
>> 
>>    
>------------------------------------------------------------------------
>>     vlc-devel mailing list
>>     To unsubscribe or modify your subscription options:
>>     https://mailman.videolan.org/listinfo/vlc-devel
>> 
>> 
>> -- 
>> Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez
>excuser 
>> ma brièveté.
>> 
>> _______________________________________________
>> vlc-devel mailing list
>> To unsubscribe or modify your subscription options:
>> https://mailman.videolan.org/listinfo/vlc-devel
>> 
>_______________________________________________
>vlc-devel mailing list
>To unsubscribe or modify your subscription options:
>https://mailman.videolan.org/listinfo/vlc-devel

-- 
Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20200922/59e4ba03/attachment.html>


More information about the vlc-devel mailing list