[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