1
0
Fork 0
mirror of https://github.com/ytdl-org/youtube-dl.git synced 2024-11-22 10:11:52 +00:00

Make ExtractorError usable for other causes

This commit is contained in:
Philipp Hagemeister 2013-01-03 15:39:55 +01:00
parent 6e3dba168b
commit 01951dda7a
3 changed files with 13 additions and 6 deletions

View file

@ -216,12 +216,15 @@ class FileDownloader(object):
Depending on if the downloader has been configured to ignore Depending on if the downloader has been configured to ignore
download errors or not, this method may throw an exception or download errors or not, this method may throw an exception or
not when errors are found, after printing the message. not when errors are found, after printing the message.
tb, if given, is additional traceback information.
""" """
if message is not None: if message is not None:
self.to_stderr(message) self.to_stderr(message)
if self.params.get('verbose'): if self.params.get('verbose'):
if tb is None: 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) self.to_stderr(tb)
if not self.params.get('ignoreerrors', False): if not self.params.get('ignoreerrors', False):
raise DownloadError(message) raise DownloadError(message)
@ -497,7 +500,7 @@ class FileDownloader(object):
try: try:
videos = ie.extract(url) videos = ie.extract(url)
except ExtractorError as de: # An error we somewhat expected 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 break
except Exception as e: except Exception as e:
if self.params.get('ignoreerrors', False): if self.params.get('ignoreerrors', False):

View file

@ -117,7 +117,7 @@ class InfoExtractor(object):
except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err: except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err:
if errnote is None: if errnote is None:
errnote = u'Unable to download webpage' 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): class YoutubeIE(InfoExtractor):

View file

@ -8,6 +8,7 @@ import locale
import os import os
import re import re
import sys import sys
import traceback
import zlib import zlib
import email.utils import email.utils
import json import json
@ -414,12 +415,15 @@ def encodeFilename(s):
class ExtractorError(Exception): class ExtractorError(Exception):
"""Error during info extraction.""" """Error during info extraction."""
def __init__(self, msg, tb=None): 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) super(ExtractorError, self).__init__(msg)
if tb is None:
tb = sys.exc_info()[2]
self.traceback = tb 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): class DownloadError(Exception):
"""Download Error exception. """Download Error exception.