diff options
| -rw-r--r-- | youtube_dl/downloader/f4m.py | 8 | ||||
| -rw-r--r-- | youtube_dl/downloader/fragment.py | 5 | ||||
| -rw-r--r-- | youtube_dl/downloader/hls.py | 8 | 
3 files changed, 17 insertions, 4 deletions
| diff --git a/youtube_dl/downloader/f4m.py b/youtube_dl/downloader/f4m.py index 80c21d40b..688e086eb 100644 --- a/youtube_dl/downloader/f4m.py +++ b/youtube_dl/downloader/f4m.py @@ -314,7 +314,8 @@ class F4mFD(FragmentFD):          man_url = info_dict['url']          requested_bitrate = info_dict.get('tbr')          self.to_screen('[%s] Downloading f4m manifest' % self.FD_NAME) -        urlh = self.ydl.urlopen(man_url) + +        urlh = self.ydl.urlopen(self._prepare_url(info_dict, man_url))          man_url = urlh.geturl()          # Some manifests may be malformed, e.g. prosiebensat1 generated manifests          # (see https://github.com/rg3/youtube-dl/issues/6215#issuecomment-121704244 @@ -387,7 +388,10 @@ class F4mFD(FragmentFD):              url_parsed = base_url_parsed._replace(path=base_url_parsed.path + name, query='&'.join(query))              frag_filename = '%s-%s' % (ctx['tmpfilename'], name)              try: -                success = ctx['dl'].download(frag_filename, {'url': url_parsed.geturl()}) +                success = ctx['dl'].download(frag_filename, { +                    'url': url_parsed.geturl(), +                    'http_headers': info_dict.get('http_headers'), +                })                  if not success:                      return False                  (down, frag_sanitized) = sanitize_open(frag_filename, 'rb') diff --git a/youtube_dl/downloader/fragment.py b/youtube_dl/downloader/fragment.py index 84aacf7db..60df627a6 100644 --- a/youtube_dl/downloader/fragment.py +++ b/youtube_dl/downloader/fragment.py @@ -9,6 +9,7 @@ from ..utils import (      error_to_compat_str,      encodeFilename,      sanitize_open, +    sanitized_Request,  ) @@ -37,6 +38,10 @@ class FragmentFD(FileDownloader):      def report_skip_fragment(self, fragment_name):          self.to_screen('[download] Skipping fragment %s...' % fragment_name) +    def _prepare_url(self, info_dict, url): +        headers = info_dict.get('http_headers') +        return sanitized_Request(url, None, headers) if headers else url +      def _prepare_and_start_frag_download(self, ctx):          self._prepare_frag_download(ctx)          self._start_frag_download(ctx) diff --git a/youtube_dl/downloader/hls.py b/youtube_dl/downloader/hls.py index 541b92ee1..7373ec05f 100644 --- a/youtube_dl/downloader/hls.py +++ b/youtube_dl/downloader/hls.py @@ -59,7 +59,8 @@ class HlsFD(FragmentFD):      def real_download(self, filename, info_dict):          man_url = info_dict['url']          self.to_screen('[%s] Downloading m3u8 manifest' % self.FD_NAME) -        manifest = self.ydl.urlopen(man_url).read() + +        manifest = self.ydl.urlopen(self._prepare_url(info_dict, man_url)).read()          s = manifest.decode('utf-8', 'ignore') @@ -112,7 +113,10 @@ class HlsFD(FragmentFD):                      count = 0                      while count <= fragment_retries:                          try: -                            success = ctx['dl'].download(frag_filename, {'url': frag_url}) +                            success = ctx['dl'].download(frag_filename, { +                                'url': frag_url, +                                'http_headers': info_dict.get('http_headers'), +                            })                              if not success:                                  return False                              down, frag_sanitized = sanitize_open(frag_filename, 'rb') | 
