diff options
author | Markus Heiser <markus.heiser@darmarIT.de> | 2021-09-10 09:20:26 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-10 09:20:26 +0000 |
commit | b671e0364fbfb09701fb675ba23a7d7bebbcf744 (patch) | |
tree | 5cc14908449328de044464fbccb4950d08632a99 /docs/dev | |
parent | 449ff708985b86c85a4badc8494a577c792c4dd7 (diff) | |
parent | 0b27c8698f7b5bbca5083cf234fabbc7d7308349 (diff) | |
download | searxng-b671e0364fbfb09701fb675ba23a7d7bebbcf744.tar.gz searxng-b671e0364fbfb09701fb675ba23a7d7bebbcf744.zip |
Merge pull request #302 from dalf/mod_plugin_on_result
[mod] plugin: call on_result for each result of each engines.
Diffstat (limited to 'docs/dev')
-rw-r--r-- | docs/dev/plugins.rst | 58 |
1 files changed, 45 insertions, 13 deletions
diff --git a/docs/dev/plugins.rst b/docs/dev/plugins.rst index 16262ea6d..44401e34f 100644 --- a/docs/dev/plugins.rst +++ b/docs/dev/plugins.rst @@ -26,8 +26,8 @@ Example plugin # attach callback to the post search hook # request: flask request object # ctx: the whole local context of the post search hook - def post_search(request, ctx): - ctx['search'].suggestions.add('example') + def post_search(request, search): + search.result_container.suggestions.add('example') return True External plugins @@ -50,20 +50,52 @@ Plugin entry points Entry points (hooks) define when a plugin runs. Right now only three hooks are implemented. So feel free to implement a hook if it fits the behaviour of your -plugin. +plugin. A plugin doesn't need to implement all the hooks. -Pre search hook ---------------- -Runs BEFORE the search request. Function to implement: ``pre_search`` +.. py:function:: pre_search(request, search) -> bool -Post search hook ----------------- + Runs BEFORE the search request. -Runs AFTER the search request. Function to implement: ``post_search`` + `search.result_container` can be changed. -Result hook ------------ + Return a boolean: -Runs when a new result is added to the result list. Function to implement: -``on_result`` + * True to continue the search + * False to stop the search + + :param flask.request request: + :param searx.search.SearchWithPlugins search: + :return: False to stop the search + :rtype: bool + + +.. py:function:: post_search(request, search) -> None + + Runs AFTER the search request. + + :param flask.request request: Flask request. + :param searx.search.SearchWithPlugins search: Context. + + +.. py:function:: on_result(request, search, result) -> bool + + Runs for each result of each engine. + + `result` can be changed. + + If `result["url"]` is defined, then `result["parsed_url"] = urlparse(result['url'])` + + .. warning:: + `result["url"]` can be changed, but `result["parsed_url"]` must be updated too. + + Return a boolean: + + * True to keep the result + * False to remove the result + + :param flask.request request: + :param searx.search.SearchWithPlugins search: + :param typing.Dict result: Result, see - :ref:`engine results` + :return: True to keep the result + :rtype: bool |