# SPDX-License-Identifier: AGPL-3.0-or-later from .online import OnlineProcessor from .offline import OfflineProcessor from .online_dictionary import OnlineDictionaryProcessor from .online_currency import OnlineCurrencyProcessor from .abstract import EngineProcessor from searx import logger import searx.engines as engines __all__ = ['EngineProcessor', 'OfflineProcessor', 'OnlineProcessor', 'OnlineDictionaryProcessor', 'OnlineCurrencyProcessor', 'processors'] logger = logger.getChild('search.processors') processors = {} def get_processor_class(engine_type): for c in [OnlineProcessor, OfflineProcessor, OnlineDictionaryProcessor, OnlineCurrencyProcessor]: if c.engine_type == engine_type: return c return None def get_processor(engine, engine_name): engine_type = getattr(engine, 'engine_type', 'online') processor_class = get_processor_class(engine_type) if processor_class: return processor_class(engine, engine_name) else: return None def initialize(engine_list): engines.initialize_engines(engine_list) for engine_name, engine in engines.engines.items(): processor = get_processor(engine, engine_name) if processor is None: logger.error('Error get processor for engine %s', engine_name) else: processors[engine_name] = processor