Delay initialization of InfoExtractors until they are needed
This commit is contained in:
		
							parent
							
								
									568d2f78d6
								
							
						
					
					
						commit
						e52d7f85f2
					
				
					 2 changed files with 14 additions and 5 deletions
				
			
		| 
						 | 
				
			
			@ -82,7 +82,7 @@ from .utils import (
 | 
			
		|||
    YoutubeDLHandler,
 | 
			
		||||
)
 | 
			
		||||
from .cache import Cache
 | 
			
		||||
from .extractor import get_info_extractor, gen_extractors
 | 
			
		||||
from .extractor import get_info_extractor, gen_extractor_classes
 | 
			
		||||
from .downloader import get_suitable_downloader
 | 
			
		||||
from .downloader.rtmp import rtmpdump_version
 | 
			
		||||
from .postprocessor import (
 | 
			
		||||
| 
						 | 
				
			
			@ -378,8 +378,9 @@ class YoutubeDL(object):
 | 
			
		|||
    def add_info_extractor(self, ie):
 | 
			
		||||
        """Add an InfoExtractor object to the end of the list."""
 | 
			
		||||
        self._ies.append(ie)
 | 
			
		||||
        self._ies_instances[ie.ie_key()] = ie
 | 
			
		||||
        ie.set_downloader(self)
 | 
			
		||||
        if not isinstance(ie, type):
 | 
			
		||||
            self._ies_instances[ie.ie_key()] = ie
 | 
			
		||||
            ie.set_downloader(self)
 | 
			
		||||
 | 
			
		||||
    def get_info_extractor(self, ie_key):
 | 
			
		||||
        """
 | 
			
		||||
| 
						 | 
				
			
			@ -397,7 +398,7 @@ class YoutubeDL(object):
 | 
			
		|||
        """
 | 
			
		||||
        Add the InfoExtractors returned by gen_extractors to the end of the list
 | 
			
		||||
        """
 | 
			
		||||
        for ie in gen_extractors():
 | 
			
		||||
        for ie in gen_extractor_classes():
 | 
			
		||||
            self.add_info_extractor(ie)
 | 
			
		||||
 | 
			
		||||
    def add_post_processor(self, pp):
 | 
			
		||||
| 
						 | 
				
			
			@ -661,6 +662,7 @@ class YoutubeDL(object):
 | 
			
		|||
            if not ie.suitable(url):
 | 
			
		||||
                continue
 | 
			
		||||
 | 
			
		||||
            ie = self.get_info_extractor(ie.ie_key())
 | 
			
		||||
            if not ie.working():
 | 
			
		||||
                self.report_warning('The program functionality for this site has been marked as broken, '
 | 
			
		||||
                                    'and will probably not work.')
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -997,11 +997,18 @@ _ALL_CLASSES = [
 | 
			
		|||
_ALL_CLASSES.append(GenericIE)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def gen_extractor_classes():
 | 
			
		||||
    """ Return a list of supported extractors.
 | 
			
		||||
    The order does matter; the first extractor matched is the one handling the URL.
 | 
			
		||||
    """
 | 
			
		||||
    return _ALL_CLASSES
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def gen_extractors():
 | 
			
		||||
    """ Return a list of an instance of every supported extractor.
 | 
			
		||||
    The order does matter; the first extractor matched is the one handling the URL.
 | 
			
		||||
    """
 | 
			
		||||
    return [klass() for klass in _ALL_CLASSES]
 | 
			
		||||
    return [klass() for klass in gen_extractor_classes()]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def list_extractors(age_limit):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue