diff options
Diffstat (limited to 'youtube_dl/downloader/dash.py')
| -rw-r--r-- | youtube_dl/downloader/dash.py | 18 | 
1 files changed, 16 insertions, 2 deletions
diff --git a/youtube_dl/downloader/dash.py b/youtube_dl/downloader/dash.py index cd84e0b07..a4685d307 100644 --- a/youtube_dl/downloader/dash.py +++ b/youtube_dl/downloader/dash.py @@ -16,12 +16,21 @@ class DashSegmentsFD(FileDownloader):          base_url = info_dict['url']          segment_urls = info_dict['segment_urls'] +        is_test = self.params.get('test', False) +        remaining_bytes = self._TEST_FILE_SIZE if is_test else None          byte_counter = 0 -        def append_url_to_file(outf, target_url, target_name): +        def append_url_to_file(outf, target_url, target_name, remaining_bytes=None):              self.to_screen('[DashSegments] %s: Downloading %s' % (info_dict['id'], target_name))              req = compat_urllib_request.Request(target_url) +            if remaining_bytes is not None: +                req.add_header('Range', 'bytes=0-%d' % (remaining_bytes - 1)) +              data = self.ydl.urlopen(req).read() + +            if remaining_bytes is not None: +                data = data[:remaining_bytes] +              outf.write(data)              return len(data) @@ -37,8 +46,13 @@ class DashSegmentsFD(FileDownloader):              for i, segment_url in enumerate(segment_urls):                  segment_len = append_url_to_file(                      outf, combine_url(base_url, segment_url), -                    'segment %d / %d' % (i + 1, len(segment_urls))) +                    'segment %d / %d' % (i + 1, len(segment_urls)), +                    remaining_bytes)                  byte_counter += segment_len +                if remaining_bytes is not None: +                    remaining_bytes -= segment_len +                    if remaining_bytes <= 0: +                        break          self.try_rename(tmpfilename, filename)  | 
