summaryrefslogtreecommitdiff
path: root/searx/autocomplete.py
diff options
context:
space:
mode:
authorMarkus Heiser <markus.heiser@darmarit.de>2022-09-29 20:54:46 +0200
committerMarkus Heiser <markus.heiser@darmarit.de>2023-03-24 10:37:42 +0100
commit6e5f22e5583cfc2a413e0afac66d3c5ea9f628b1 (patch)
treed49c0795c7e8a49c19721258f4dc8b056fd06bfa /searx/autocomplete.py
parent64fea2f9cb079bd0055c6a23360097d285204515 (diff)
downloadsearxng-6e5f22e5583cfc2a413e0afac66d3c5ea9f628b1.tar.gz
searxng-6e5f22e5583cfc2a413e0afac66d3c5ea9f628b1.zip
[mod] replace engines_languages.json by engines_traits.json
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>
Diffstat (limited to 'searx/autocomplete.py')
-rw-r--r--searx/autocomplete.py15
1 files changed, 11 insertions, 4 deletions
diff --git a/searx/autocomplete.py b/searx/autocomplete.py
index aeb697a14..9b8755218 100644
--- a/searx/autocomplete.py
+++ b/searx/autocomplete.py
@@ -12,7 +12,7 @@ from lxml import etree
from httpx import HTTPError
from searx import settings
-from searx.data import ENGINES_LANGUAGES
+from searx.engines import engines
from searx.network import get as http_get
from searx.exceptions import SearxEngineResponseException
@@ -111,7 +111,7 @@ def seznam(query, _lang):
def startpage(query, lang):
# startpage autocompleter
- lui = ENGINES_LANGUAGES['startpage'].get(lang, 'english')
+ lui = engines['startpage'].supported_languages.get(lang, 'english') # vintage / deprecated
url = 'https://startpage.com/suggestions?{query}'
resp = get(url.format(query=urlencode({'q': query, 'segment': 'startpage.udog', 'lui': lui})))
data = resp.json()
@@ -177,12 +177,19 @@ backends = {
}
-def search_autocomplete(backend_name, query, lang):
+def search_autocomplete(backend_name, query, sxng_locale):
backend = backends.get(backend_name)
if backend is None:
return []
+ if engines[backend_name].traits.data_type != "traits_v1":
+ # vintage / deprecated
+ if not sxng_locale or sxng_locale == 'all':
+ sxng_locale = 'en'
+ else:
+ sxng_locale = sxng_locale.split('-')[0]
+
try:
- return backend(query, lang)
+ return backend(query, sxng_locale)
except (HTTPError, SearxEngineResponseException):
return []