aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey M․ <dstftw@gmail.com>2016-08-27 04:57:59 +0700
committerSergey M․ <dstftw@gmail.com>2016-09-03 17:51:48 +0700
commit2e99cd30c3108fd8da6a9f9fadfa89852c8d8826 (patch)
tree079f8a1e59564494da07742fdf9c61810af8b375
parent25afc2a7830e281e849609202b4f70728664bdb7 (diff)
[downloader/dash:hls] Report exact fragment error on retry
-rw-r--r--youtube_dl/downloader/dash.py4
-rw-r--r--youtube_dl/downloader/fragment.py5
-rw-r--r--youtube_dl/downloader/hls.py4
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