aboutsummaryrefslogtreecommitdiffstats
path: root/yt_dlp/extractor/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'yt_dlp/extractor/__init__.py')
-rw-r--r--yt_dlp/extractor/__init__.py37
1 files changed, 12 insertions, 25 deletions
diff --git a/yt_dlp/extractor/__init__.py b/yt_dlp/extractor/__init__.py
index afd3d05ac..6bfa4bd7b 100644
--- a/yt_dlp/extractor/__init__.py
+++ b/yt_dlp/extractor/__init__.py
@@ -1,32 +1,15 @@
-import contextlib
-import os
+from ..compat.compat_utils import passthrough_module
-from ..utils import load_plugins
-
-_LAZY_LOADER = False
-if not os.environ.get('YTDLP_NO_LAZY_EXTRACTORS'):
- with contextlib.suppress(ImportError):
- from .lazy_extractors import * # noqa: F403
- from .lazy_extractors import _ALL_CLASSES
- _LAZY_LOADER = True
-
-if not _LAZY_LOADER:
- from .extractors import * # noqa: F403
- _ALL_CLASSES = [ # noqa: F811
- klass
- for name, klass in globals().items()
- if name.endswith('IE') and name != 'GenericIE'
- ]
- _ALL_CLASSES.append(GenericIE) # noqa: F405
-
-_PLUGIN_CLASSES = load_plugins('extractor', 'IE', globals())
-_ALL_CLASSES = list(_PLUGIN_CLASSES.values()) + _ALL_CLASSES
+passthrough_module(__name__, '.extractors')
+del passthrough_module
def gen_extractor_classes():
""" Return a list of supported extractors.
The order does matter; the first extractor matched is the one handling the URL.
"""
+ from .extractors import _ALL_CLASSES
+
return _ALL_CLASSES
@@ -39,10 +22,12 @@ def gen_extractors():
def list_extractor_classes(age_limit=None):
"""Return a list of extractors that are suitable for the given age, sorted by extractor name"""
+ from .generic import GenericIE
+
yield from sorted(filter(
- lambda ie: ie.is_suitable(age_limit) and ie != GenericIE, # noqa: F405
+ lambda ie: ie.is_suitable(age_limit) and ie != GenericIE,
gen_extractor_classes()), key=lambda ie: ie.IE_NAME.lower())
- yield GenericIE # noqa: F405
+ yield GenericIE
def list_extractors(age_limit=None):
@@ -52,4 +37,6 @@ def list_extractors(age_limit=None):
def get_info_extractor(ie_name):
"""Returns the info extractor class with the given ie_name"""
- return globals()[ie_name + 'IE']
+ from . import extractors
+
+ return getattr(extractors, f'{ie_name}IE')