mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 22:55:18 +00:00 
			
		
		
		
	Make ExtractorError usable for other causes
This commit is contained in:
		| @@ -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): | ||||||
|   | |||||||
| @@ -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): | ||||||
|   | |||||||
| @@ -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. | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Philipp Hagemeister
					Philipp Hagemeister