[extractor/common] Properly decode error string on python 2 (Closes #1354, closes #3957, closes #4037, closes #6449)

This commit is contained in:
Sergey M․ 2015-12-20 02:43:50 +06:00
parent fa64a84311
commit dd85e4d707

View File

@ -34,6 +34,7 @@
fix_xml_ampersands, fix_xml_ampersands,
float_or_none, float_or_none,
int_or_none, int_or_none,
preferredencoding,
RegexNotFoundError, RegexNotFoundError,
sanitize_filename, sanitize_filename,
sanitized_Request, sanitized_Request,
@ -332,7 +333,12 @@ def _request_webpage(self, url_or_request, video_id, note=None, errnote=None, fa
return False return False
if errnote is None: if errnote is None:
errnote = 'Unable to download webpage' errnote = 'Unable to download webpage'
errmsg = '%s: %s' % (errnote, compat_str(err)) err_str = str(err)
# On python 2 error byte string must be decoded with proper
# encoding rather than ascii
if sys.version_info[0] < 3:
err_str = err_str.decode(preferredencoding())
errmsg = '%s: %s' % (errnote, err_str)
if fatal: if fatal:
raise ExtractorError(errmsg, sys.exc_info()[2], cause=err) raise ExtractorError(errmsg, sys.exc_info()[2], cause=err)
else: else: