Browse Source

[fix] matrixrooms add proper MRS integration

Related:

- https://github.com/searxng/searxng/issues/2918
Aine 1 year ago
parent
commit
213cb74378
3 changed files with 50 additions and 9 deletions
  1. 13 0
      docs/dev/engines/online/mrs.rst
  2. 31 5
      searx/engines/mrs.py
  3. 6 4
      searx/settings.yml

+ 13 - 0
docs/dev/engines/online/mrs.rst

@@ -0,0 +1,13 @@
+.. _mrs engine:
+
+=========================
+Matrix Rooms Search (MRS)
+=========================
+
+.. contents:: Contents
+   :depth: 2
+   :local:
+   :backlinks: entry
+
+.. automodule:: searx.engines.mrs
+   :members:

+ 31 - 5
searx/engines/matrixrooms.py → searx/engines/mrs.py

@@ -1,26 +1,52 @@
 # SPDX-License-Identifier: AGPL-3.0-or-later
 # SPDX-License-Identifier: AGPL-3.0-or-later
 # lint: pylint
 # lint: pylint
-"""Matrixrooms.info (social media)
+"""Matrix Rooms Search - a fully-featured, standalone, matrix rooms search service.
+
+Configuration
+=============
+
+The engine has the following mandatory settings:
+
+- :py:obj:`base_url`
+
+.. code:: yaml
+
+  - name: MRS
+    engine: mrs
+    base_url: https://mrs-host
+    ...
+
+Implementation
+==============
 """
 """
 
 
 from urllib.parse import quote_plus
 from urllib.parse import quote_plus
 
 
 about = {
 about = {
     "website": 'https://matrixrooms.info',
     "website": 'https://matrixrooms.info',
-    "wikidata_id": 'Q107565255',
-    "official_api_documentation": None,
-    "use_official_api": False,
+    "wikidata_id": None,
+    "official_api_documentation": 'https://gitlab.com/etke.cc/mrs/api/-/blob/main/openapi.yml?ref_type=heads',
+    "use_official_api": True,
     "require_api_key": False,
     "require_api_key": False,
     "results": 'JSON',
     "results": 'JSON',
 }
 }
 paging = True
 paging = True
 categories = ['social media']
 categories = ['social media']
 
 
-base_url = "https://apicdn.matrixrooms.info"
+base_url = ""
 matrix_url = "https://matrix.to"
 matrix_url = "https://matrix.to"
 page_size = 20
 page_size = 20
 
 
 
 
+def init(engine_settings):  # pylint: disable=unused-argument
+    """The ``base_url`` must be set in the configuration, if ``base_url`` is not
+    set, a :py:obj:`ValueError` is raised during initialization.
+
+    """
+    if not base_url:
+        raise ValueError('engine MRS, base_url is unset')
+
+
 def request(query, params):
 def request(query, params):
     params['url'] = f"{base_url}/search/{quote_plus(query)}/{page_size}/{(params['pageno']-1)*page_size}"
     params['url'] = f"{base_url}/search/{quote_plus(query)}/{page_size}/{(params['pageno']-1)*page_size}"
     return params
     return params

+ 6 - 4
searx/settings.yml

@@ -1043,10 +1043,12 @@ engines:
     base_url: https://mastodon.social
     base_url: https://mastodon.social
     shortcut: mah
     shortcut: mah
 
 
-  - name: matrixrooms
-    engine: matrixrooms
-    shortcut: mtrx
-    disabled: true
+  # - name: matrixrooms
+  #   engine: mrs
+  #   # https://docs.searxng.org/dev/engines/online/mrs.html
+  #   # base_url: https://mrs-api-host
+  #   shortcut: mtrx
+  #   disabled: true
 
 
   - name: metacpan
   - name: metacpan
     engine: metacpan
     engine: metacpan