forked from zaclys/searxng
6e5f22e558
Implementations of the *traits* of the engines. Engine's traits are fetched from the origin engine and stored in a JSON file in the *data folder*. Most often traits are languages and region codes and their mapping from SearXNG's representation to the representation in the origin search engine. To load traits from the persistence:: searx.enginelib.traits.EngineTraitsMap.from_data() For new traits new properties can be added to the class:: searx.enginelib.traits.EngineTraits .. hint:: Implementation is downward compatible to the deprecated *supported_languages method* from the vintage implementation. The vintage code is tagged as *deprecated* an can be removed when all engines has been ported to the *traits method*. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
# 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):
|
|
"""Returns a set of :ref:`request params <engine request online>` or ``None`` if
|
|
search query does not match to :py:obj:`re_search_urls`.
|
|
"""
|
|
|
|
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
|