diff options
author | Markus Heiser <markus.heiser@darmarit.de> | 2021-06-03 12:51:14 +0200 |
---|---|---|
committer | Markus Heiser <markus.heiser@darmarit.de> | 2021-06-04 15:04:38 +0200 |
commit | 1c8cf1d3a8ff9ff6c23a092b3a97d19d29840629 (patch) | |
tree | 0387e835a13b1a90c7c3831f1ec4af57f2fb53a0 /searx/engines/demo_offline.py | |
parent | acb15772025ea84b1f61a9e67a4cb5f9d4685d43 (diff) | |
download | searxng-1c8cf1d3a8ff9ff6c23a092b3a97d19d29840629.tar.gz searxng-1c8cf1d3a8ff9ff6c23a092b3a97d19d29840629.zip |
[docs] add engine "Demo Offline Engine"
This engine just exists for documentation purpose.
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
Diffstat (limited to 'searx/engines/demo_offline.py')
-rw-r--r-- | searx/engines/demo_offline.py | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/searx/engines/demo_offline.py b/searx/engines/demo_offline.py new file mode 100644 index 000000000..06609d2c3 --- /dev/null +++ b/searx/engines/demo_offline.py @@ -0,0 +1,74 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +# lint: pylint +"""Within this module we implement a *demo offline engine*. Do not look to +close to the implementation, its just a simple example. To get in use of this +*demo* engine add the following entry to your engines list in ``settings.yml``: + +.. code:: yaml + + - name: my offline engine + engine: demo_offline + shortcut: demo + disabled: false + +""" + +import json + +engine_type = 'offline' +categories = ['general'] +disabled = True +timeout = 2.0 + +about = { + "wikidata_id": None, + "official_api_documentation": None, + "use_official_api": False, + "require_api_key": False, + "results": 'JSON', +} + +# if there is a need for globals, use a leading underline +_my_offline_engine = None + +def init(engine_settings=None): + """Initialization of the (offline) engine. The origin of this demo engine is a + simple json string which is loaded in this example while the engine is + initialized. + + """ + global _my_offline_engine # pylint: disable=global-statement + + _my_offline_engine = ( + '[ {"value": "%s"}' + ', {"value":"first item"}' + ', {"value":"second item"}' + ', {"value":"third item"}' + ']' + + % engine_settings.get('name') + ) + +def search(query, request_params): + """Query (offline) engine and return results. Assemble the list of results from + your local engine. In this demo engine we ignore the 'query' term, usual + you would pass the 'query' term to your local engine to filter out the + results. + + """ + global _my_offline_engine # pylint: disable=global-statement + ret_val = [] + + result_list = json.loads(_my_offline_engine) + + for row in result_list: + entry = { + 'query' : query, + 'language' : request_params['language'], + 'value' : row.get("value"), + # choose a result template or comment out to use the *default* + 'template' : 'key-value.html', + } + ret_val.append(entry) + + return ret_val |