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)