From e92d40c854eb22f22baed9558257941057cf13fa Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Sun, 30 Jan 2022 16:05:08 +0100 Subject: [enh] implement a OnlineUrlSearchProcessor Signed-off-by: Markus Heiser --- searx/search/processors/online_url_search.py | 42 ++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 searx/search/processors/online_url_search.py (limited to 'searx/search/processors/online_url_search.py') diff --git a/searx/search/processors/online_url_search.py b/searx/search/processors/online_url_search.py new file mode 100644 index 000000000..2863be28e --- /dev/null +++ b/searx/search/processors/online_url_search.py @@ -0,0 +1,42 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +# lint: pylint +"""Processores for engine-type: ``online_url_search`` + +""" + +import re +from .online import OnlineProcessor + +re_search_urls = { + 'http': re.compile(r'https?:\/\/[^ ]*'), + 'ftp': re.compile(r'ftps?:\/\/[^ ]*'), + 'data:image': re.compile('data:image/[^; ]*;base64,[^ ]*'), +} + + +class OnlineUrlSearchProcessor(OnlineProcessor): + """Processor class used by ``online_url_search`` engines.""" + + engine_type = 'online_url_search' + + def get_params(self, search_query, engine_category): + params = super().get_params(search_query, engine_category) + if params is None: + return None + + url_match = False + search_urls = {} + + for k, v in re_search_urls.items(): + m = v.search(search_query.query) + v = None + if m: + url_match = True + v = m[0] + search_urls[k] = v + + if not url_match: + return None + + params['search_urls'] = search_urls + return params -- cgit v1.2.3