Make ExtractorError usable for other causes
This commit is contained in:
parent
6e3dba168b
commit
01951dda7a
3 changed files with 13 additions and 6 deletions
|
@ -216,12 +216,15 @@ class FileDownloader(object):
|
|||
Depending on if the downloader has been configured to ignore
|
||||
download errors or not, this method may throw an exception or
|
||||
not when errors are found, after printing the message.
|
||||
|
||||
tb, if given, is additional traceback information.
|
||||
"""
|
||||
if message is not None:
|
||||
self.to_stderr(message)
|
||||
if self.params.get('verbose'):
|
||||
if tb is None:
|
||||
tb = u''.join(traceback.format_list(traceback.extract_stack()))
|
||||
tb_data = traceback.format_list(traceback.extract_stack())
|
||||
tb = u''.join(tb_data)
|
||||
self.to_stderr(tb)
|
||||
if not self.params.get('ignoreerrors', False):
|
||||
raise DownloadError(message)
|
||||
|
@ -497,7 +500,7 @@ class FileDownloader(object):
|
|||
try:
|
||||
videos = ie.extract(url)
|
||||
except ExtractorError as de: # An error we somewhat expected
|
||||
self.trouble(u'ERROR: ' + compat_str(de), compat_str(u''.join(traceback.format_tb(de.traceback))))
|
||||
self.trouble(u'ERROR: ' + compat_str(de), de.format_traceback())
|
||||
break
|
||||
except Exception as e:
|
||||
if self.params.get('ignoreerrors', False):
|
||||
|
|
|
@ -117,7 +117,7 @@ class InfoExtractor(object):
|
|||
except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err:
|
||||
if errnote is None:
|
||||
errnote = u'Unable to download webpage'
|
||||
raise ExtractorError(u'%s: %s' % (errnote, compat_str(err)))
|
||||
raise ExtractorError(u'%s: %s' % (errnote, compat_str(err)), sys.exc_info()[2])
|
||||
|
||||
|
||||
class YoutubeIE(InfoExtractor):
|
||||
|
|
|
@ -8,6 +8,7 @@ import locale
|
|||
import os
|
||||
import re
|
||||
import sys
|
||||
import traceback
|
||||
import zlib
|
||||
import email.utils
|
||||
import json
|
||||
|
@ -414,12 +415,15 @@ def encodeFilename(s):
|
|||
class ExtractorError(Exception):
|
||||
"""Error during info extraction."""
|
||||
def __init__(self, msg, tb=None):
|
||||
""" tb is the original traceback (so that it can be printed out) """
|
||||
""" tb, if given, is the original traceback (so that it can be printed out). """
|
||||
super(ExtractorError, self).__init__(msg)
|
||||
if tb is None:
|
||||
tb = sys.exc_info()[2]
|
||||
self.traceback = tb
|
||||
|
||||
def format_traceback(self):
|
||||
if self.traceback is None:
|
||||
return None
|
||||
return u''.join(traceback.format_tb(self.traceback))
|
||||
|
||||
|
||||
class DownloadError(Exception):
|
||||
"""Download Error exception.
|
||||
|
|
Loading…
Reference in a new issue