123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- # 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)
|