Commit Graph

339 Commits (d4ece5d359bfe5c6b87e0ef19f2b351e408e510c)

Author SHA1 Message Date
Sergey M․ 0eee52f34b
Introduce --keep-fragments
Sergey M․ d3f0687cf7
[downloader/fragment] Use temp file for current fragment
Remita Amine 4abdba643c [downloader/fragment] remove unused code
Remita Amine 3e0304fe6e [downloader/fragment] use the documented names for fragment progress_hooks fields
Remita Amine ea0c2f219c [downloader/fragment] use a general file to store fragment download context
Remita Amine 75a2485407 [fragment,hls,f4m,dash,ism] improve fragment downloading
- resume immediately
- no need to concatenate segments and decrypt them on every resume
- no need to save temp files for segments

and for hls downloader:
- no need to download keys for segments that already downloaded
Remita Amine f59746372a [downloader/hls] add basic support for EXT-X-BYTERANGE tag()
Remita Amine 40fcba5edb improve coding style
Remita Amine 2bfaf89b6c [downloader/hls] move check for m3u8 live streams to get_suitable_downloader
Remita Amine fb4fc44928 [downloader/hls] immediately delegate downloading to ffmpeg in case live stream
Sergey M․ a50862b735
[downloader/external] Add missing import and PEP8
John Hawkinson 6d0fe752bf [external:ffmpeg] In test harness, limit to 10k download size
Otherwise, if you screw up a playlist test by including a playlist
dictionary key, you'll be there for eons while it downloads all the
files before erroring out.
Pratyush Singh d374d943f3
[downloader/common] Limit displaying 2 digits after decimal point in sleep interval message
Sergey M․ de64e23c56
[downloader/ism] Honor HTTP headers when downloading fragments
Sergey M․ 553f6dbac7
[downloader/dash] Honor HTTP headers when downloading fragments
For example, https://www.oppetarkiv.se/video/1196142/natten-ar-dagens-mor
Remita Amine be670b8e8f [external:ffmpeg] do not assume that ffmpeg unknown version format is new
Sergey M․ 7097bffba6
[downloader/fragment] Respect --no-part
Remita Amine 36fce54816 [turner] fix downloading of secure hls formats using ffmpeg(closes )(closes )(closes )
Remita Amine 8bdc149441 [downloader/external:ffmpeg] minimize the use of aac_adtstoasc filter
Remita Amine bfa1073e11 [uplynk] force downloading using hls native downloader(closes )
Yen Chi Hsuan 582be35847
Update coding style after pycodestyle 2.1.0
In pycodestyle 2.1.0, E305 was introduced, which requires two blank
lines after top level declarations, too.

See https://github.com/PyCQA/pycodestyle/issues/400

See also ; thanks @stepshal for first mentioning this issue and
initial patches
Sergey M․ 690355551c
[downoader/fragment,f4m,hls] Add internal support for custom HTTP headers
Sergey M․ 9d64e1dcdc
[downloader/ism] Fix typo
Remita Amine 10380e55de [downloader/ism] fix AVC Decoder Configuration Record creation in python 3
Remita Amine b2758123c5 add Basic support for Smooth Streaming protocol()
Sergey M․ bcd6276520
[downloader/common] Remove debug output
Yen Chi Hsuan d54739a2e6
[downloader/http] xattr values should be bytes
Yen Chi Hsuan d7753d1948
[downloader/http] Use write_xattr function for --xattr-set-filesize
Remita Amine 6f126d903f [download/hls] Delegate downloading to ffmpeg for live streams
Sergey M․ 86f4d14f81
Refactor fragments interface and dash segments downloader
- Eliminate segment_urls and initialization_url
+ Introduce manifest_url (manifest may contain unfragmented data in this case url will be used for direct media URL and manifest_url for manifest itself correspondingly)
* Rewrite dashsegments downloader to use fragments data
* Improve generic mpd extraction
Yen Chi Hsuan 919cf1a62f
[downloader/dash] Abort if the first segment fails
Closes , Closes 
Sergey M․ 4a69fa04e0
[downloader/dash] Abort download immediately after giving up on some fragment
Sergey M․ 2e99cd30c3
[downloader/dash:hls] Report exact fragment error on retry
Sergey M․ 25afc2a783
[downloader/dash:hls] Respect --fragment-retries and --skip-unavailable-fragments (Closes , closes )
Sergey M․ 9603b66012
Introduce --skip-unavailable-fragments
Yen Chi Hsuan 6c9b71bc08
[downloader/external] Recommend --hls-prefer-native for SOCKS users
Related: 
Remita Amine b8079a40bc [turner] fix secure m3u8 formats downloading
Yen Chi Hsuan 20bad91d76
[downloader/external] Clarify that ffmpeg doesn't support SOCKS
Ref: 
Remita Amine 07ea9c9b05 [downloader/hls] fill IV with zeros for IVs shorter than 16-octet
Remita Amine aaf44a2f47 [uplynk] Add new extractor
Remita Amine acfccacad5 [downloader/external:curl] Clarify why CurlFD should not capture stderr
Remita Amine 98e698f1ff [external/curl] respect more downloader options and display progress
Sergey M․ 1ad6b891b2
Add more checks for --min/max-sleep-interval arguments and use more idiomatic naming
singh-pratyush96 065bc35489
Add --max-sleep-interval (Closes )
Yen Chi Hsuan 477b7a8474
[downloader/f4m] Fix for Rai live streams
Sergey M․ 8369a4fe76
[downloader/hls] Simplify and carry long lines
remitamine e154c65128 [downloader/hls] Add support for AES-128 encrypted segments in hlsnative downloader
Sergey M․ e69f9f5d68
[downloader/external] Decode error string before writing to stderr
Yen Chi Hsuan 50ce1c331c
[downloader/external] Add another env for proxies in ffmpeg/avconv
Related sources:
https://git.libav.org/?p=libav.git;a=blob;f=libavformat/http.c;h=8fe8d11e1edfdbb04a8726db2c49cfef3f572aac;hb=HEAD#l152
https://git.libav.org/?p=libav.git;a=blob;f=libavformat/tls.c;h=fab243e93e20034e88e619188c13a44a5d8ccdb9;hb=HEAD#l63
https://github.com/FFmpeg/FFmpeg/blob/f8e89d8/libavformat/http.c#L191
https://github.com/FFmpeg/FFmpeg/blob/f8e89d8/libavformat/tls.c#L92
Sergey M․ 633b444fd2
[downloader/hls] Correct comment on twitch vods
Sergey M․ 51c4d85ce7
[downloader/hls] PEP 8
Sergey M․ 1e236d7e23
[downloader/hls] Do not rely on EXT-X-PLAYLIST-TYPE:EVENT
Sergey M․ 2615fa7584
[downloader/f4m] Simply select format when it's the only one
Yen Chi Hsuan 1b405bb47d
[downloader/f4m] Tolerate truncate segments when testing
Replaces 

Fixes  and test_Bloomberg partially
Yen Chi Hsuan edaa23f822
[compat] Rename struct_(un)pack to compat_struct_(un)pack
Yen Chi Hsuan dab0daeeb0
[utils,compat] Move struct_pack and struct_unpack to compat.py
Sergey M․ 2937590e8b
[downloader/hls] PEP 8
Sergey M․ e62d9c5caa
[downloader/external] Call ffmpeg with with HTTP_PROXY env variable set ()
Sergey M․ 6104cc2985
[downloader/hls] Add event media playlists to unsupported features of hlsnative
Sergey M․ c15c47d19b
[downloader/hls] Remove EXT-X-MEDIA-SEQUENCE from unsupported features for hlsnative
Sergey M eb785b856f Merge pull request from dstftw/hls-native-to-ffmpeg-delegation
[downloader/hls] Delegate extraction to ffmpeg when unsupported features detected
Sergey M․ f5436c5d9e
[downloader/external] Add temp fix ffmpeg m3u8 downloads (Closes )
Sergey M․ 0d66bd0eab
[downloader/hls] Delegate extraction to ffmpeg when unsupported features detected
Sergey M․ bf09af3acb
Add --hls-prefer-ffmpeg
remitamine d868f43c58 [ffmpeg] check for - file name in _ffmpeg_filename_argument
remitamine ce599d5a7e [downloader/external] enable piping for FFmpegFD(closes )
Yen Chi Hsuan f5d8743e0a
[downloader/rtsp] Print the command
Sergey M․ f7df343b4a [downloader/f4m] Extract routine for removing unsupported encrypted media
Sergey M․ 16a8b7986b [downloader/fragment] Document fragment_retries
Sergey M․ 617e58d850 [downloader/{common,fragment}] Fix total retries reporting on python 2.6
Sergey M․ e33baba0dd [downloader/dash] Add fragment retry capability
YouTube may often return 404 HTTP error for a fragment causing the
whole download to fail. However if the same fragment is immediately
retried with the same request data this usually succeeds (1-2 attemps
is usually enough) thus allowing to download the whole file successfully.
So, we will retry all fragments that fail with 404 HTTP error for now.
Sergey M․ 721f26b821 [downloader/fragment] Add report_retry_fragment
remitamine 4230c4894d [external/downloader] fix rtmp downloading using FFmpegFD
remitamine 2e7e561c1d Merge pull request from remitamine/ffmpegfd
[downloader/external] Add FFmpegFD
remitamine d8515fd41c [downloader/external] pass configuration args to ffmpeg
remitamine 694c47b261 [external/downloader] don't pass -t and -ss to ffmpeg
remitamine 77dea16ac8 [downloader/external] check for ffmpeg availablity when it used for m3u8 download
remitamine 6ae27bed01 [download/external] move the check for multiple selected formats to get_suitable_downloader
remitamine da1973a038 [extractor/__init__] disable time range downloading
remitamine be24916a7f [downloader/rtsp] Add rtsp and mms downloader
remitamine 2cb99ebbd0 [downloader/external] add can_download mathod for checking downloader availibilty and support
remitamine 91ee320bfa [downloader/external] wrap available_opt in a list
remitamine 634415ca17 [downloader/external] skip FFmpegFD when requesting multiple formats
remitamine a755f82549 [ffmpeg] convert format ext to ffmpeg output formats codes
Sergey M․ 1b5284b13f [downloader/fragment] Make speed more smooth
At the beginning of every segment there was a drop to Unknown speed due to timeslice being too small to calculate speed.
Now last speed from the previous fragment is used.
Yen Chi Hsuan e9c0cdd389 [jython] Introduce compat_os_name
os.name is always 'java' on Jython
remitamine f34294fa0c [downloader/external:ffmpegfd] check for None value of start_time
remitamine 99cbe98ce8 [downloader/external] check for external downloaders availability
remitamine 12b84ac8c1 [downloader/external] Add FFmpegFD(fixes )
- replace HlsFD and RtspFD
- add basic support for downloading part of the video or audio
Sergey M․ 611c1dd96e [refactor] Single quotes consistency
Sergey M․ d800609c62 [refactor] Do not specify redundant None as second argument in dict.get()
Sergey M․ c78c9cd10d [downloader/dash] PEP 8
remitamine c43fe0268c [downloader/dash] Implement dashsegments fd in terms of fragment fd
Sergey M․ 56401e1e5f [downloader/hls] Do not send 'q' to ffmpeg on Windows (Closes )
remitamine a1a22572fb [downloader/dash] make initialization_url optional
Sergey M․ b8c9926c0a [downloader/f4m] Do not update fragment list while test
Sergey M․ 2c2f1efdcd [downloader/fragment] Remove superfluous whitespace
Sergey M․ 09104e9930 [downloader/f4m] Add live stream flag to context
Now download progress for f4m livestreams is reported correctly
Sergey M․ 5fa1702ca6 [downloader/fragment] Do not report total bytes estimation and eta for live streams
Sergey M․ 8ab3fe81d8 [downloader/f4m] Prefer bootstrap url attribute over inline bootstrap info