diff options
| -rw-r--r-- | youtube_dl/downloader/dash.py | 4 | ||||
| -rw-r--r-- | youtube_dl/downloader/fragment.py | 5 | ||||
| -rw-r--r-- | youtube_dl/downloader/hls.py | 4 | 
3 files changed, 7 insertions, 6 deletions
diff --git a/youtube_dl/downloader/dash.py b/youtube_dl/downloader/dash.py index cbcee324d..e087cf142 100644 --- a/youtube_dl/downloader/dash.py +++ b/youtube_dl/downloader/dash.py @@ -53,7 +53,7 @@ class DashSegmentsFD(FragmentFD):                      down.close()                      segments_filenames.append(target_sanitized)                      break -                except compat_urllib_error.HTTPError: +                except compat_urllib_error.HTTPError as err:                      # 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 @@ -62,7 +62,7 @@ class DashSegmentsFD(FragmentFD):                      # HTTP error.                      count += 1                      if count <= fragment_retries: -                        self.report_retry_fragment(segment_name, count, fragment_retries) +                        self.report_retry_fragment(err, segment_name, count, fragment_retries)              if count > fragment_retries:                  if skip_unavailable_fragments:                      self.report_skip_fragment(segment_name) diff --git a/youtube_dl/downloader/fragment.py b/youtube_dl/downloader/fragment.py index b4a798f8f..84aacf7db 100644 --- a/youtube_dl/downloader/fragment.py +++ b/youtube_dl/downloader/fragment.py @@ -6,6 +6,7 @@ import time  from .common import FileDownloader  from .http import HttpFD  from ..utils import ( +    error_to_compat_str,      encodeFilename,      sanitize_open,  ) @@ -28,10 +29,10 @@ class FragmentFD(FileDownloader):                          Skip unavailable fragments (DASH and hlsnative only)      """ -    def report_retry_fragment(self, fragment_name, count, retries): +    def report_retry_fragment(self, err, fragment_name, count, retries):          self.to_screen(              '[download] Got server HTTP error: %s. Retrying fragment %s (attempt %d of %s)...' -            % (fragment_name, count, self.format_retries(retries))) +            % (error_to_compat_str(err), fragment_name, count, self.format_retries(retries)))      def report_skip_fragment(self, fragment_name):          self.to_screen('[download] Skipping fragment %s...' % fragment_name) diff --git a/youtube_dl/downloader/hls.py b/youtube_dl/downloader/hls.py index 7412620a5..5d70abf62 100644 --- a/youtube_dl/downloader/hls.py +++ b/youtube_dl/downloader/hls.py @@ -118,14 +118,14 @@ class HlsFD(FragmentFD):                              frag_content = down.read()                              down.close()                              break -                        except compat_urllib_error.HTTPError: +                        except compat_urllib_error.HTTPError as err:                              # Unavailable (possibly temporary) fragments may be served.                              # First we try to retry then either skip or abort.                              # See https://github.com/rg3/youtube-dl/issues/10165,                              # https://github.com/rg3/youtube-dl/issues/10448).                              count += 1                              if count <= fragment_retries: -                                self.report_retry_fragment(frag_name, count, fragment_retries) +                                self.report_retry_fragment(err, frag_name, count, fragment_retries)                      if count > fragment_retries:                          if skip_unavailable_fragments:                              i += 1  | 
