aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordirkf <fieldhouse@gmx.net>2024-01-27 00:07:14 +0000
committerdirkf <fieldhouse@gmx.net>2024-02-02 12:36:05 +0000
commitbec9180e8904a12c55cfa838b0541879d16bf20f (patch)
tree579d585bca400150999c5a7ef52cdd6dce597f6f
parentc58b655a9ef255eb9d02b4d57706c46cfdf35975 (diff)
[downloader/dash] Support `range` in fragment (format f'{start}-{end}')
* adapted from https://github.com/ytdl-org/youtube-dl/pull/30279 * thx former GH user kikuyan
-rw-r--r--youtube_dl/downloader/dash.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/youtube_dl/downloader/dash.py b/youtube_dl/downloader/dash.py
index 2800d4260..f3c058879 100644
--- a/youtube_dl/downloader/dash.py
+++ b/youtube_dl/downloader/dash.py
@@ -35,6 +35,7 @@ class DashSegmentsFD(FragmentFD):
for frag_index, fragment in enumerate(fragments, 1):
if frag_index <= ctx['fragment_index']:
continue
+ success = False
# In DASH, the first segment contains necessary headers to
# generate a valid MP4 file, so always abort for the first segment
fatal = frag_index == 1 or not skip_unavailable_fragments
@@ -42,10 +43,14 @@ class DashSegmentsFD(FragmentFD):
if not fragment_url:
assert fragment_base_url
fragment_url = urljoin(fragment_base_url, fragment['path'])
- success = False
+ headers = info_dict.get('http_headers')
+ fragment_range = fragment.get('range')
+ if fragment_range:
+ headers = headers.copy() if headers else {}
+ headers['Range'] = 'bytes=%s' % (fragment_range,)
for count in itertools.count():
try:
- success, frag_content = self._download_fragment(ctx, fragment_url, info_dict)
+ success, frag_content = self._download_fragment(ctx, fragment_url, info_dict, headers)
if not success:
return False
self._append_fragment(ctx, frag_content)