--force-subtitle and -S did not respect each other but now it is
working as it should. If --force-subtitle is used with -S it downloads
only the subtitles, and if --force-subtitle is used alone it overwrites
the existing subtitles and continues with the audio/video stream.
The option gets the correct ISO639-3 language code using my own simple
language detection api, and merges with correct metadata using ffmpeg.
If ffmpeg is not installed an error message is raised since avconv
doesn't seem keep up with ffmpeg.
I also did a little cleanup in postprocess().
Added command to download all available subtitles for a video (--all-subtitles)
Added support to print all the subtitle urls when the get url parameter is used
Fixed so subtitle url and stream url get printed if -S and -g but not --force-subtitles parameter is used
Added support for downloading all subtitles and auto subfix them with language name for Urplay and Urskola (even when just one subtitle is downloaded)
None of these were any real problems, but easier to spot real issues if pylint
is a bit quieter. Apart from the pylint overrides being sprinkled over the code
base, this commit also fixes occurences of the following issues:
- logging-not-lazy
- logging-format-interpolation
- unused-import
- unused-variable
The progress bar wasn't updated after the downloaded completed,
so the final progress bar would look something like this:
[99/100][===============================.] ETA: 0:00:00
This can be interpreted as the file didn't download completely.
Reported-by: rooth
It was easily possible to end up in a state where the bitrate prioritization
wanted a bitrate only avaiable via protocols outside of our set of accepted
protocols, like trying to disable dash for svtplay. By doing the protocol
filtering first, we end up only considering "valid" bitrates.
Move the responsibility for extracting it to select_quality (prio_streams'
caller). This makes the prio_streams function simpler.
And at the same time, move the default protocol_prio list to global scope. This
can for instance be used for improved error reporting.