Browse Source

[mod] add /engine_descriptions.json endpoint

returns engine descriptions (JSON):
* key: engine name
* value: description in the user locale, use English description as a fallback
Alexandre Flament 3 years ago
parent
commit
bfd24d1226
3 changed files with 3352 additions and 0 deletions
  1. 2 0
      searx/data/__init__.py
  2. 3332 0
      searx/data/engine_descriptions.json
  3. 18 0
      searx/webapp.py

+ 2 - 0
searx/data/__init__.py

@@ -14,6 +14,7 @@ __all__ = [
     'WIKIDATA_UNITS',
     'EXTERNAL_BANGS',
     'OSM_KEYS_TAGS',
+    'ENGINE_DESCRIPTIONS',
     'ahmia_blacklist_loader',
 ]
 
@@ -45,3 +46,4 @@ EXTERNAL_URLS = _load('external_urls.json')
 WIKIDATA_UNITS = _load('wikidata_units.json')
 EXTERNAL_BANGS = _load('external_bangs.json')
 OSM_KEYS_TAGS = _load('osm_keys_tags.json')
+ENGINE_DESCRIPTIONS = _load('engine_descriptions.json')

File diff suppressed because it is too large
+ 3332 - 0
searx/data/engine_descriptions.json


+ 18 - 0
searx/webapp.py

@@ -54,6 +54,7 @@ from searx import (
     settings,
     searx_debug,
 )
+from searx.data import ENGINE_DESCRIPTIONS
 from searx.settings_defaults import OUTPUT_FORMATS
 from searx.settings_loader import get_default_settings_path
 from searx.exceptions import SearxParameterException
@@ -1140,6 +1141,23 @@ def image_proxy():
         return '', 400
 
 
+@app.route('/engine_descriptions.json', methods=['GET'])
+def engine_descriptions():
+    locale = get_locale().split('_')[0]
+    result = ENGINE_DESCRIPTIONS['en'].copy()
+    if locale != 'en':
+        for engine, description in ENGINE_DESCRIPTIONS.get(locale, {}).items():
+            result[engine] = description
+    for engine, description in result.items():
+        if len(description) ==2 and description[1] == 'ref':
+            ref_engine, ref_lang = description[0].split(':')
+            description = ENGINE_DESCRIPTIONS[ref_lang][ref_engine]
+        if isinstance(description, str):
+            description = [ description, 'wikipedia' ]
+        result[engine] = description
+    return jsonify(result)
+
+
 @app.route('/stats', methods=['GET'])
 def stats():
     """Render engine statistics page."""

Some files were not shown because too many files changed in this diff