[utils] restart download if server does not support byte ranges

This commit is contained in:
remitamine 2015-08-02 03:28:04 +01:00 committed by Sergey M․
parent 25a4c5a9ed
commit d7d2a9a3db

View File

@ -57,6 +57,20 @@ def real_download(self, filename, info_dict):
# Establish connection # Establish connection
try: try:
data = self.ydl.urlopen(request) data = self.ydl.urlopen(request)
if resume_len > 0:
content_range = data.headers.get('Content-Range')
if content_range:
content_range_m = re.search(r'bytes (\d+)-', content_range)
if content_range_m:
# Content-Range is correct - go on
if resume_len == int(content_range_m.group(1)):
break
# Content-Range is invalid - wipe the file and do entire redownload
resume_len = 0
open_mode = 'wb'
break break
except (compat_urllib_error.HTTPError, ) as err: except (compat_urllib_error.HTTPError, ) as err:
if (err.code < 500 or err.code >= 600) and err.code != 416: if (err.code < 500 or err.code >= 600) and err.code != 416: