Ponysearch/docs/dev/plugins.rst

46 lines
1.2 KiB
ReStructuredText
Raw Normal View History

2015-11-17 23:13:30 +01:00
Plugins
-------
Plugins can extend/replace functionality of various components inside
searx.
example\_plugin.py
~~~~~~~~~~~~~~~~~~
.. code:: python
name = 'Example plugin'
description = 'This plugin extends the suggestions with the word "example"'
default_on = False # disable by default
js_dependencies = tuple() # optional, list of static js files
css_dependencies = tuple() # optional, list of static css files
# 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')
return True
Currently implemented plugin entry points (a.k.a hooks)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Pre search hook (``pre_search``)
- Post search hook (``post_search``)
- Result hook (``on_result``) (is called if a new result is added (see
https\_rewrite plugin))
Feel free to add more hooks to the code if it is required by a plugin.
TODO
~~~~
- Better documentation
- More hooks
- search hook (is called while searx is requesting results (for
example: things like math-solver), the different hooks are running
parallel)