mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	Improve plugin architecture (#5553)
to make plugins easier to develop and use: * Plugins are now loaded as namespace packages. * Plugins can be loaded in any distribution of yt-dlp (binary, pip, source, etc.). * Plugin packages can be installed and managed via pip, or dropped into any of the documented locations. * Users do not need to edit any code files to install plugins. * Backwards-compatible with previous plugin architecture. As a side-effect, yt-dlp will now search in a few more locations for config files. Closes https://github.com/yt-dlp/yt-dlp/issues/1389 Authored by: flashdagger, coletdjnz, pukkandan, Grub4K Co-authored-by: Marcel <flashdagger@googlemail.com> Co-authored-by: pukkandan <pukkandan.ytdlp@gmail.com> Co-authored-by: Simon Sawicki <accounts@grub4k.xyz>
This commit is contained in:
		| @@ -32,6 +32,7 @@ from .extractor import gen_extractor_classes, get_info_extractor | ||||
| from .extractor.common import UnsupportedURLIE | ||||
| from .extractor.openload import PhantomJSwrapper | ||||
| from .minicurses import format_text | ||||
| from .plugins import directories as plugin_directories | ||||
| from .postprocessor import _PLUGIN_CLASSES as plugin_postprocessors | ||||
| from .postprocessor import ( | ||||
|     EmbedThumbnailPP, | ||||
| @@ -3773,10 +3774,6 @@ class YoutubeDL: | ||||
|                 write_debug('Lazy loading extractors is forcibly disabled') | ||||
|             else: | ||||
|                 write_debug('Lazy loading extractors is disabled') | ||||
|         if plugin_extractors or plugin_postprocessors: | ||||
|             write_debug('Plugins: %s' % [ | ||||
|                 '%s%s' % (klass.__name__, '' if klass.__name__ == name else f' as {name}') | ||||
|                 for name, klass in itertools.chain(plugin_extractors.items(), plugin_postprocessors.items())]) | ||||
|         if self.params['compat_opts']: | ||||
|             write_debug('Compatibility options: %s' % ', '.join(self.params['compat_opts'])) | ||||
| 
 | ||||
| @@ -3810,6 +3807,16 @@ class YoutubeDL: | ||||
|                 proxy_map.update(handler.proxies) | ||||
|         write_debug(f'Proxy map: {proxy_map}') | ||||
| 
 | ||||
|         for plugin_type, plugins in {'Extractor': plugin_extractors, 'Post-Processor': plugin_postprocessors}.items(): | ||||
|             if not plugins: | ||||
|                 continue | ||||
|             write_debug(f'{plugin_type} Plugins: %s' % (', '.join(sorted(('%s%s' % ( | ||||
|                 klass.__name__, '' if klass.__name__ == name else f' as {name}') | ||||
|                 for name, klass in plugins.items()))))) | ||||
|         plugin_dirs = plugin_directories() | ||||
|         if plugin_dirs: | ||||
|             write_debug(f'Plugin directories: {plugin_dirs}') | ||||
| 
 | ||||
|         # Not implemented | ||||
|         if False and self.params.get('call_home'): | ||||
|             ipaddr = self.urlopen('https://yt-dl.org/ip').read().decode() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Matthew
					Matthew