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…
	
	Add table
		Add a link
		
	
		Reference in a new issue