diff options
author | pukkandan <pukkandan.ytdlp@gmail.com> | 2021-05-08 20:45:14 +0530 |
---|---|---|
committer | pukkandan <pukkandan.ytdlp@gmail.com> | 2021-05-09 04:22:27 +0530 |
commit | 2f567473c6001160138aeb43dd6096093dd5448e (patch) | |
tree | c001cfd3b02a988d8383b682d9e2373216975ac5 | |
parent | 000ee7ef3440349cd714f8bdfab4214648881805 (diff) | |
download | hypervideo-pre-2f567473c6001160138aeb43dd6096093dd5448e.tar.lz hypervideo-pre-2f567473c6001160138aeb43dd6096093dd5448e.tar.xz hypervideo-pre-2f567473c6001160138aeb43dd6096093dd5448e.zip |
[Plugins] Prioritize plugins over standard extractors
and prevent plugins from overwriting the standard extractor classes
Closes #304
-rw-r--r-- | yt_dlp/extractor/__init__.py | 6 | ||||
-rw-r--r-- | yt_dlp/utils.py | 6 |
2 files changed, 7 insertions, 5 deletions
diff --git a/yt_dlp/extractor/__init__.py b/yt_dlp/extractor/__init__.py index 38f6df181..7d540540e 100644 --- a/yt_dlp/extractor/__init__.py +++ b/yt_dlp/extractor/__init__.py @@ -12,9 +12,6 @@ except ImportError: if not _LAZY_LOADER: from .extractors import * - - _PLUGIN_CLASSES = load_plugins('extractor', 'IE', globals()) - _ALL_CLASSES = [ klass for name, klass in globals().items() @@ -22,6 +19,9 @@ if not _LAZY_LOADER: ] _ALL_CLASSES.append(GenericIE) + _PLUGIN_CLASSES = load_plugins('extractor', 'IE', globals()) + _ALL_CLASSES = _PLUGIN_CLASSES + _ALL_CLASSES + def gen_extractor_classes(): """ Return a list of supported extractors. diff --git a/yt_dlp/utils.py b/yt_dlp/utils.py index baa2a415e..b80a8cedb 100644 --- a/yt_dlp/utils.py +++ b/yt_dlp/utils.py @@ -6081,7 +6081,7 @@ def get_executable_path(): return os.path.abspath(path) -def load_plugins(name, type, namespace): +def load_plugins(name, suffix, namespace): plugin_info = [None] classes = [] try: @@ -6089,7 +6089,9 @@ def load_plugins(name, type, namespace): name, [os.path.join(get_executable_path(), 'ytdlp_plugins')]) plugins = imp.load_module(name, *plugin_info) for name in dir(plugins): - if not name.endswith(type): + if name in namespace: + continue + if not name.endswith(suffix): continue klass = getattr(plugins, name) classes.append(klass) |