noones-search/searx/plugins/__init__.py

69 lines
1.7 KiB
Python

# SPDX-License-Identifier: AGPL-3.0-or-later
""".. sidebar:: Further reading ..
- :ref:`plugins admin`
- :ref:`SearXNG settings <settings plugins>`
- :ref:`builtin plugins`
Plugins can extend or replace functionality of various components of SearXNG.
Here is an example of a very simple plugin that adds a "Hello" into the answer
area:
.. code:: python
from flask_babel import gettext as _
from searx.plugins import Plugin
from searx.result_types import Answer
class MyPlugin(Plugin):
id = "self_info"
default_on = True
def __init__(self):
super().__init__()
info = PluginInfo(id=self.id, name=_("Hello"), description=_("demo plugin"))
def post_search(self, request, search):
return [ Answer(answer="Hello") ]
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 / a plugin doesn't need to implement all the hooks.
- pre search: :py:obj:`Plugin.pre_search`
- post search: :py:obj:`Plugin.post_search`
- on each result item: :py:obj:`Plugin.on_result`
For a coding example have a look at :ref:`self_info plugin`.
----
.. autoclass:: Plugin
:members:
.. autoclass:: PluginInfo
:members:
.. autoclass:: PluginStorage
:members:
.. autoclass:: searx.plugins._core.ModulePlugin
:members:
:show-inheritance:
"""
from __future__ import annotations
__all__ = ["PluginInfo", "Plugin", "PluginStorage"]
from ._core import PluginInfo, Plugin, PluginStorage
STORAGE: PluginStorage = PluginStorage()
def initialize(app):
STORAGE.load_builtins()
STORAGE.init(app)