| import importlib.util | |
| from pathlib import Path | |
| class PluginManager: | |
| def __init__(self): | |
| self.plugins = {} | |
| def load_plugins(self, directory="plugins"): | |
| for plugin_file in Path(directory).glob("*.py"): | |
| spec = importlib.util.spec_from_file_location(plugin_file.stem, plugin_file) | |
| module = importlib.util.module_from_spec(spec) | |
| spec.loader.exec_module(module) | |
| self.plugins[plugin_file.stem] = module | |
| def run_analysis(self, ad): | |
| results = {} | |
| for name, plugin in self.plugins.items(): | |
| if hasattr(plugin, "analyze"): | |
| results[name] = plugin.analyze(ad) | |
| return results |