mirror of
https://github.com/searxng/searxng.git
synced 2025-07-13 00:09:18 +02:00
[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>
This commit is contained in:
parent
64fea2f9cb
commit
6e5f22e558
29 changed files with 5415 additions and 4593 deletions
|
@ -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 []
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue