yt-dlp/yt_dlp/extractor/__init__.py

55 lines
1.7 KiB
Python
Raw Normal View History

2024-10-19 05:25:36 +02:00
from .._globals import extractors as _extractors_context
2024-10-20 00:59:29 +02:00
from .._globals import plugin_ies as _plugin_ies_context
2023-01-16 04:53:41 +01:00
from ..compat.compat_utils import passthrough_module
2024-10-20 00:59:29 +02:00
from ..plugins import PluginSpec, register_plugin_spec
2023-01-16 04:53:41 +01:00
passthrough_module(__name__, '.extractors')
del passthrough_module
2024-10-20 00:59:29 +02:00
register_plugin_spec(PluginSpec(
module_name='extractor',
suffix='IE',
destination=_extractors_context,
plugin_destination=_plugin_ies_context,
))
2013-08-24 21:10:03 +02:00
def gen_extractor_classes():
""" Return a list of supported extractors.
The order does matter; the first extractor matched is the one handling the URL.
"""
2023-01-16 04:53:41 +01:00
import_extractors()
2024-11-30 00:57:30 +01:00
return list(_extractors_context.value.values())
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 gen_extractor_classes()]
2013-08-24 21:10:03 +02:00
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,
gen_extractor_classes()), key=lambda ie: ie.IE_NAME.lower())
yield GenericIE
def list_extractors(age_limit=None):
"""Return a list of extractor instances that are suitable for the given age, sorted by extractor name"""
return [ie() for ie in list_extractor_classes(age_limit)]
def get_info_extractor(ie_name):
"""Returns the info extractor class with the given ie_name"""
2023-01-16 04:53:41 +01:00
import_extractors()
2024-11-30 00:57:30 +01:00
return _extractors_context.value[f'{ie_name}IE']
2023-01-16 04:53:41 +01:00
def import_extractors():
from . import extractors # noqa: F401