diff options
| -rwxr-xr-x | youtube_dl/YoutubeDL.py | 10 | ||||
| -rw-r--r-- | youtube_dl/extractor/__init__.py | 9 | 
2 files changed, 14 insertions, 5 deletions
| diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index cd0805303..f18a8e840 100755 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -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.') diff --git a/youtube_dl/extractor/__init__.py b/youtube_dl/extractor/__init__.py index c3121d83c..cd1f116e2 100644 --- a/youtube_dl/extractor/__init__.py +++ b/youtube_dl/extractor/__init__.py @@ -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): | 
