From 6e5f22e5583cfc2a413e0afac66d3c5ea9f628b1 Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Thu, 29 Sep 2022 20:54:46 +0200 Subject: [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 --- searx/autocomplete.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'searx/autocomplete.py') 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 [] -- cgit v1.2.3-54-g00ecf