<html><head></head><body>Marvin already explained to you that it just fails safe on error.<br><br><div class="gmail_quote">Le 22 septembre 2020 10:30:28 GMT+03:00, Steve Lhomme <robux4@ycbcr.xyz> a écrit :<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<pre class="k9mail">On 2020-09-22 9:16, Rémi Denis-Courmont wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;">Hi,<br><br>No. That question was already addressed in more details in the first <br>review thread.<br></blockquote><br>I read it and I read it again. I found nothing that talks about error <br>handling in this script. So either point to the answer or provide an <br>answer. Thanks.<br><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;">Le 22 septembre 2020 08:35:04 GMT+03:00, Steve Lhomme <robux4@ycbcr.xyz> <br>a écrit :<br><br> diff --git a/share/ytdl-extract.py b/share/ytdl-extract.py<br> new file mode 100755<br> index 0000000000..71c79e0156<br> --- /dev/null<br> +++ b/share/ytdl-extract.py<br> @@ -0,0 +1,102 @@<br> +#! /usr/bin/python3<br> +#<br> +# Copyright (C) 2020 Rémi Denis-Courmont<br> +#<br> +# This program is free software; you can redistribute it and/or<br> modify it<br> +# under the terms of the GNU Lesser General Public License as<br> published by<br> +# the Free Software Foundation; either version 2.1 of the<br> License, or<br> +# (at your option) any later version.<br> +#<br> +# This program is distributed in the hope that it will be useful,<br> +# but WITHOUT ANY WARRANTY; without even the implied warranty of<br> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the<br> +# GNU Lesser General Public License for more details.<br> +#<br> +# You should have received a copy of the GNU Lesser General<br> Public License<br> +# along with this program; if not, write to the Free Software<br> Foundation,<br> +# Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.<br> +<br> +import sys<br> +import youtube_dl<br> +<br> +class logger(object):<br> + def debug(self, msg):<br> + pass<br> +<br> + def warning(self, msg):<br> + pass<br> +<br> + def error(self, msg):<br> + sys.stderr.write(msg)<br> +<br> +def formats_choose_best(fmts):<br> + # Pick our preferred format out of many<br> + best_abr = -1<br> + best_height = -1<br> + best_format = None<br> +<br> + for f in fmts:<br> + if 'height' in f and f['height']:<br> + height = f['height']<br> + else:<br> + height = 0<br> +<br> + if height < best_height:<br> + continue<br> +<br> + if 'abr' in f and f['abr']:<br> + abr = f['abr']<br> + else:<br> + abr = 0<br> +<br> + if height == best_height or abr < best_abr:<br> + continue<br> +<br> + best_abr = abr<br> + best_height = height<br> + best_format = f<br> +<br> + return best_format<br> +<br> +def entry_extract(entry):<br> + # Process a given entry of a playlist<br> + if 'formats' in entry:<br> + fmt = formats_choose_best(entry['formats'])<br> + else:<br> + fmt = entry<br> +<br> + if 'title' in entry:<br> + print('#EXTINF:,,' + entry['title'].splitlines()[0])<br> +<br> + if 'url' in fmt:<br> + print('#EXTVLCOPT:no-ytdl') # don't parse recursively<br> + print(fmt['url'])<br> + else:<br> + print('vlc://nop')<br> +<br> +def url_extract(url):<br> + opts = {<br> + 'logger': logger(),<br> + }<br> +<br> + dl = youtube_dl.YoutubeDL(opts)<br> + #dl.add_default_info_extractors()<br> +<br> + # Process a given URL<br> + infos = dl.extract_info(url, download=False)<br><br><br> What happens if there's an error here ? Should the function/script<br> return an error rather than an empty M3U ?<br><br> +<br> + print('#EXTM3U')<br> +<br> + if 'title' in infos:<br> + print('#PLAYLIST:' + infos['title'].splitlines()[0])<br> +<br> + if 'entries' in infos:<br> + # URL is a playlist: iterate over entries<br> + for entry in infos['entries']:<br> + entry_extract(entry)<br> + else:<br> + # URL is a single media<br> + entry_extract(infos)<br> +<br> +<br> +url_extract(sys.argv[1])<br> -- <br> 2.28.0<hr> vlc-devel mailing list<br> To unsubscribe or modify your subscription options:<br> <a href="https://mailman.videolan.org/listinfo/vlc-devel">https://mailman.videolan.org/listinfo/vlc-devel</a><br><br><br>-- <br>Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser <br>ma brièveté.<hr>vlc-devel mailing list<br>To unsubscribe or modify your subscription options:<br><a href="https://mailman.videolan.org/listinfo/vlc-devel">https://mailman.videolan.org/listinfo/vlc-devel</a><br><br></blockquote><hr>vlc-devel mailing list<br>To unsubscribe or modify your subscription options:<br><a href="https://mailman.videolan.org/listinfo/vlc-devel">https://mailman.videolan.org/listinfo/vlc-devel</a></pre></blockquote></div><br>-- <br>Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté.</body></html>