Browse Source

[mod] autocomplete.py: add support for mwmbl completions

Bnyro 1 year ago
parent
commit
df71c24b20
4 changed files with 15 additions and 3 deletions
  1. 1 0
      docs/admin/settings/settings_search.rst
  2. 2 2
      docs/dev/search_api.rst
  3. 11 0
      searx/autocomplete.py
  4. 1 1
      searx/settings.yml

+ 1 - 0
docs/admin/settings/settings_search.rst

@@ -35,6 +35,7 @@
   - ``dbpedia``
   - ``dbpedia``
   - ``duckduckgo``
   - ``duckduckgo``
   - ``google``
   - ``google``
+  - ``mwmbl``
   - ``startpage``
   - ``startpage``
   - ``swisscows``
   - ``swisscows``
   - ``qwant``
   - ``qwant``

+ 2 - 2
docs/dev/search_api.rst

@@ -68,8 +68,8 @@ Parameters
   Proxy image results through SearXNG.
   Proxy image results through SearXNG.
 
 
 ``autocomplete`` : default from :ref:`settings search`
 ``autocomplete`` : default from :ref:`settings search`
-  [ ``google``, ``dbpedia``, ``duckduckgo``, ``startpage``, ``wikipedia``,
-  ``swisscows``, ``qwant`` ]
+  [ ``google``, ``dbpedia``, ``duckduckgo``, ``mwmbl``, ``startpage``,
+  ``wikipedia``, ``swisscows``, ``qwant`` ]
 
 
   Service which completes words as you type.
   Service which completes words as you type.
 
 

+ 11 - 0
searx/autocomplete.py

@@ -110,6 +110,16 @@ def google_complete(query, sxng_locale):
     return results
     return results
 
 
 
 
+def mwmbl(query, _lang):
+    # mwmbl autocompleter
+    url = 'https://api.mwmbl.org/search/complete?{query}'
+
+    results = get(url.format(query=urlencode({'q': query}))).json()[1]
+
+    # results starting with `go:` are direct urls and not useful for auto completion
+    return [result for result in results if not result.startswith("go: ") and not result.startswith("search: ")]
+
+
 def seznam(query, _lang):
 def seznam(query, _lang):
     # seznam search autocompleter
     # seznam search autocompleter
     url = 'https://suggest.seznam.cz/fulltext/cs?{query}'
     url = 'https://suggest.seznam.cz/fulltext/cs?{query}'
@@ -208,6 +218,7 @@ backends = {
     'dbpedia': dbpedia,
     'dbpedia': dbpedia,
     'duckduckgo': duckduckgo,
     'duckduckgo': duckduckgo,
     'google': google_complete,
     'google': google_complete,
+    'mwmbl': mwmbl,
     'seznam': seznam,
     'seznam': seznam,
     'startpage': startpage,
     'startpage': startpage,
     'swisscows': swisscows,
     'swisscows': swisscows,

+ 1 - 1
searx/settings.yml

@@ -23,7 +23,7 @@ brand:
 search:
 search:
   # Filter results. 0: None, 1: Moderate, 2: Strict
   # Filter results. 0: None, 1: Moderate, 2: Strict
   safe_search: 0
   safe_search: 0
-  # Existing autocomplete backends: "dbpedia", "duckduckgo", "google", "yandex",
+  # Existing autocomplete backends: "dbpedia", "duckduckgo", "google", "yandex", "mwmbl",
   # "seznam", "startpage", "swisscows", "qwant", "wikipedia" - leave blank to turn it off
   # "seznam", "startpage", "swisscows", "qwant", "wikipedia" - leave blank to turn it off
   # by default.
   # by default.
   autocomplete: ""
   autocomplete: ""