Subject: Re: [bug#40060] [PATCH 1/2] gnu: youtube-dl: Use ffmpeg and pycryptodome

From: Brice Waegeneire <[email-masked]>
Date: Tue, 17 Mar 2020 09:06:57 +0000

On 2020-03-14 22:17, Tobias Geerinckx-Rice via Guix-patches via wrote:
> Brice Waegeneire 写道：
>> WARNING: You have requested multiple formats but ffmpeg or avconv are
>> not installed. The formats won't be merged.

NOTE: This message appear when using a format option like this
='bestvideo[height<=320]+bestaudio'=.

> This message is one of the best I've seen.  It clearly explains to the
> user what's (not) going to happen, and what they can do to change that
> *if* they want to.  Hence I think adding ffmpeg as a hard dependency
> is incorrect.

What about this one?

#+begin_src sh
$ youtue-dl https://www.youtube.com/watch\?v\=dp8PhLsUcFE
[youtube] dp8PhLsUcFE: Downloading webpage
[youtube] dp8PhLsUcFE: Downloading m3u8 information
[youtube] dp8PhLsUcFE: Downloading MPD manifest
[download] Destination: Bloomberg Global Financial News-dp8PhLsUcFE.mp4
ERROR: m3u8 download detected but ffmpeg or avconv could not be found. 
Please install one.
#+end_src

When downloading a live stream from youtube.com (and proabably others),
~youtube-dl~ needs ffmpeg to download the HLS stream – I tried with just
~pycryptodome~ and it doesn't work.

> (I'd also oppose a youtube-dl-full variant, by the way.  Packages
> aren't the right place for this; profiles are.)
> 
> Does youtube-dl print a similarly clear message when pycryptodome is
> needed but missing?  If not, that addition LGTM with a
> 
>  ("pycryptodome" ,pycryptodome) ; for the hlsnative downloader

#+begin_src sh
$ youtube-dl http://www.ivi.ru/watch/146500
[ivi] 146500: Downloading video JSON
ERROR: pycryptodomex not found. Please install it.
#+end_src

#+begin_src python
                 self.report_error('pycrypto not found. Please install 
it.')
#+end_src

I digged a little deeper about this dependency, ~pycryptodome~
replace the deprecated ~pycrypto~ library with the same name space
(=Crypto=) while ~pycryptodomex~ uses it's own name space (=Cryptodome=) 
to
provide similar functionality.

#+begin_src python
             self.report_warning(
                 'hlsnative has detected features it does not support, '
                 'extraction will be delegated to ffmpeg')
#+end_src

So I'm not sure if adding ~pycryptodome(x)~ is that useful after all.
Especially if it can't totally replace ~ffmpeg~ when donating HLS 
streams.

> comment.  Cover letters & commit messages age badly.

Noted.

I think ~ffmpeg~ should be an input of ~youtube-dl~ while 
~pycrytodome(x)~
don't need to since most (except the ivi downloader it seems) 
functionality
can be achieved with ~ffmpeg~. WDYT?