mirror of
				https://github.com/searxng/searxng.git
				synced 2025-11-03 19:17:07 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			70 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
.. _dev plugin:
 | 
						|
 | 
						|
=======
 | 
						|
Plugins
 | 
						|
=======
 | 
						|
 | 
						|
.. sidebar:: Further reading ..
 | 
						|
 | 
						|
   - :ref:`plugins generic`
 | 
						|
 | 
						|
Plugins can extend or replace functionality of various components of searx.
 | 
						|
 | 
						|
Example plugin
 | 
						|
==============
 | 
						|
 | 
						|
.. code:: python
 | 
						|
 | 
						|
   name = 'Example plugin'
 | 
						|
   description = 'This plugin extends the suggestions with the word "example"'
 | 
						|
   default_on = False  # disabled 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
 | 
						|
 | 
						|
External plugins
 | 
						|
================
 | 
						|
 | 
						|
External plugins are standard python modules implementing all the requirements of the standard plugins.
 | 
						|
Plugins can be enabled by adding them to :ref:`settings.yml`'s ``plugins`` section.
 | 
						|
Example external plugin can be found `here <https://github.com/asciimoo/searx_external_plugin_example>`_.
 | 
						|
 | 
						|
Register your plugin
 | 
						|
====================
 | 
						|
 | 
						|
To enable your plugin register your plugin in
 | 
						|
searx > plugin > __init__.py.
 | 
						|
And at the bottom of the file add your plugin like.
 | 
						|
``plugins.register(name_of_python_file)``
 | 
						|
 | 
						|
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.
 | 
						|
 | 
						|
Pre search hook
 | 
						|
---------------
 | 
						|
 | 
						|
Runs BEFORE the search request. Function to implement: ``pre_search``
 | 
						|
 | 
						|
Post search hook
 | 
						|
----------------
 | 
						|
 | 
						|
Runs AFTER the search request. Function to implement: ``post_search``
 | 
						|
 | 
						|
Result hook
 | 
						|
-----------
 | 
						|
 | 
						|
Runs when a new result is added to the result list. Function to implement:
 | 
						|
``on_result``
 |