summaryrefslogtreecommitdiff
path: root/searx/search
diff options
context:
space:
mode:
authorMarkus Heiser <markus.heiser@darmarIT.de>2023-03-29 09:47:21 +0200
committerGitHub <noreply@github.com>2023-03-29 09:47:21 +0200
commitf950119ca87363aec81591dc4985f11371aa2b3e (patch)
treeab893ff1f60d8c969ff0f5c2fad0cff49148aa3c /searx/search
parent64fea2f9cb079bd0055c6a23360097d285204515 (diff)
parent6f9e678346e5978a09ee453a62fa133cdc0ee0bd (diff)
Merge pull request #2269 from return42/locale-revision
Revision of the locale- and language- handling in SearXNG
Diffstat (limited to 'searx/search')
-rw-r--r--searx/search/processors/__init__.py5
-rw-r--r--searx/search/processors/abstract.py12
-rw-r--r--searx/search/processors/online.py10
-rw-r--r--searx/search/processors/online_currency.py4
-rw-r--r--searx/search/processors/online_dictionary.py5
-rw-r--r--searx/search/processors/online_url_search.py5
6 files changed, 27 insertions, 14 deletions
diff --git a/searx/search/processors/__init__.py b/searx/search/processors/__init__.py
index a270b4ef5..1390de456 100644
--- a/searx/search/processors/__init__.py
+++ b/searx/search/processors/__init__.py
@@ -30,7 +30,10 @@ from .abstract import EngineProcessor
logger = logger.getChild('search.processors')
PROCESSORS: Dict[str, EngineProcessor] = {}
-"""Cache request processores, stored by *engine-name* (:py:func:`initialize`)"""
+"""Cache request processores, stored by *engine-name* (:py:func:`initialize`)
+
+:meta hide-value:
+"""
def get_processor_class(engine_type):
diff --git a/searx/search/processors/abstract.py b/searx/search/processors/abstract.py
index d74616db0..5f1882ca4 100644
--- a/searx/search/processors/abstract.py
+++ b/searx/search/processors/abstract.py
@@ -138,7 +138,8 @@ class EngineProcessor(ABC):
return False
def get_params(self, search_query, engine_category):
- """Returns a set of *request params* or ``None`` if request is not supported.
+ """Returns a set of (see :ref:`request params <engine request arguments>`) or
+ ``None`` if request is not supported.
Not supported conditions (``None`` is returned):
@@ -159,11 +160,20 @@ class EngineProcessor(ABC):
params['safesearch'] = search_query.safesearch
params['time_range'] = search_query.time_range
params['engine_data'] = search_query.engine_data.get(self.engine_name, {})
+ params['searxng_locale'] = search_query.lang
+
+ # deprecated / vintage --> use params['searxng_locale']
+ #
+ # Conditions related to engine's traits are implemented in engine.traits
+ # module. Don't do 'locale' decissions here in the abstract layer of the
+ # search processor, just pass the value from user's choice unchanged to
+ # the engine request.
if hasattr(self.engine, 'language') and self.engine.language:
params['language'] = self.engine.language
else:
params['language'] = search_query.lang
+
return params
@abstractmethod
diff --git a/searx/search/processors/online.py b/searx/search/processors/online.py
index 242718416..697533d8c 100644
--- a/searx/search/processors/online.py
+++ b/searx/search/processors/online.py
@@ -51,6 +51,9 @@ class OnlineProcessor(EngineProcessor):
super().initialize()
def get_params(self, search_query, engine_category):
+ """Returns a set of :ref:`request params <engine request online>` or ``None``
+ if request is not supported.
+ """
params = super().get_params(search_query, engine_category)
if params is None:
return None
@@ -184,11 +187,6 @@ class OnlineProcessor(EngineProcessor):
self.handle_exception(result_container, e, suspend=True)
self.logger.exception('CAPTCHA')
except SearxEngineTooManyRequestsException as e:
- if "google" in self.engine_name:
- self.logger.warn(
- "Set to 'true' the use_mobile_ui parameter in the 'engines:'"
- " section of your settings.yml file if google is blocked for you."
- )
self.handle_exception(result_container, e, suspend=True)
self.logger.exception('Too many requests')
except SearxEngineAccessDeniedException as e:
@@ -223,7 +221,7 @@ class OnlineProcessor(EngineProcessor):
'test': ['unique_results'],
}
- if getattr(self.engine, 'supported_languages', []):
+ if getattr(self.engine, 'traits', False):
tests['lang_fr'] = {
'matrix': {'query': 'paris', 'lang': 'fr'},
'result_container': ['not_empty', ('has_language', 'fr')],
diff --git a/searx/search/processors/online_currency.py b/searx/search/processors/online_currency.py
index 92398239f..7cb4205c9 100644
--- a/searx/search/processors/online_currency.py
+++ b/searx/search/processors/online_currency.py
@@ -38,8 +38,8 @@ class OnlineCurrencyProcessor(OnlineProcessor):
engine_type = 'online_currency'
def get_params(self, search_query, engine_category):
- """Returns a set of *request params* or ``None`` if search query does not match
- to :py:obj:`parser_re`."""
+ """Returns a set of :ref:`request params <engine request online_currency>`
+ or ``None`` if search query does not match to :py:obj:`parser_re`."""
params = super().get_params(search_query, engine_category)
if params is None:
diff --git a/searx/search/processors/online_dictionary.py b/searx/search/processors/online_dictionary.py
index fbfc9df8e..6145a47d1 100644
--- a/searx/search/processors/online_dictionary.py
+++ b/searx/search/processors/online_dictionary.py
@@ -18,8 +18,9 @@ class OnlineDictionaryProcessor(OnlineProcessor):
engine_type = 'online_dictionary'
def get_params(self, search_query, engine_category):
- """Returns a set of *request params* or ``None`` if search query does not match
- to :py:obj:`parser_re`."""
+ """Returns a set of :ref:`request params <engine request online_dictionary>` or
+ ``None`` if search query does not match to :py:obj:`parser_re`.
+ """
params = super().get_params(search_query, engine_category)
if params is None:
return None
diff --git a/searx/search/processors/online_url_search.py b/searx/search/processors/online_url_search.py
index 6383fa37f..a1dd6a018 100644
--- a/searx/search/processors/online_url_search.py
+++ b/searx/search/processors/online_url_search.py
@@ -20,9 +20,10 @@ class OnlineUrlSearchProcessor(OnlineProcessor):
engine_type = 'online_url_search'
def get_params(self, search_query, engine_category):
- """Returns a set of *request params* or ``None`` if search query does not match
- to at least one of :py:obj:`re_search_urls`.
+ """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