123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- # SPDX-License-Identifier: AGPL-3.0-or-later
- """Implementations of the framework for the SearXNG engines.
- .. hint::
- The long term goal is to modularize all implementations of the engine
- framework here in this Python package. ToDo:
- - move implementations of the :ref:`searx.engines loader` to a new module in
- the :py:obj:`searx.enginelib` namespace.
- """
- from __future__ import annotations
- from typing import List, Callable, TYPE_CHECKING
- if TYPE_CHECKING:
- from searx.enginelib import traits
- class Engine: # pylint: disable=too-few-public-methods
- """Class of engine instances build from YAML settings.
- Further documentation see :ref:`general engine configuration`.
- .. hint::
- This class is currently never initialized and only used for type hinting.
- """
- # Common options in the engine module
- engine_type: str
- """Type of the engine (:ref:`searx.search.processors`)"""
- paging: bool
- """Engine supports multiple pages."""
- time_range_support: bool
- """Engine supports search time range."""
- safesearch: bool
- """Engine supports SafeSearch"""
- language_support: bool
- """Engine supports languages (locales) search."""
- language: str
- """For an engine, when there is ``language: ...`` in the YAML settings the engine
- does support only this one language:
- .. code:: yaml
- - name: google french
- engine: google
- language: fr
- """
- region: str
- """For an engine, when there is ``region: ...`` in the YAML settings the engine
- does support only this one region::
- .. code:: yaml
- - name: google belgium
- engine: google
- region: fr-BE
- """
- fetch_traits: Callable
- """Function to to fetch engine's traits from origin."""
- traits: traits.EngineTraits
- """Traits of the engine."""
- # settings.yml
- categories: List[str]
- """Specifies to which :ref:`engine categories` the engine should be added."""
- name: str
- """Name that will be used across SearXNG to define this engine. In settings, on
- the result page .."""
- engine: str
- """Name of the python file used to handle requests and responses to and from
- this search engine (file name from :origin:`searx/engines` without
- ``.py``)."""
- enable_http: bool
- """Enable HTTP (by default only HTTPS is enabled)."""
- shortcut: str
- """Code used to execute bang requests (``!foo``)"""
- timeout: float
- """Specific timeout for search-engine."""
- display_error_messages: bool
- """Display error messages on the web UI."""
- proxies: dict
- """Set proxies for a specific engine (YAML):
- .. code:: yaml
- proxies :
- http: socks5://proxy:port
- https: socks5://proxy:port
- """
- disabled: bool
- """To disable by default the engine, but not deleting it. It will allow the
- user to manually activate it in the settings."""
- inactive: bool
- """Remove the engine from the settings (*disabled & removed*)."""
- about: dict
- """Additional fields describing the engine.
- .. code:: yaml
- about:
- website: https://example.com
- wikidata_id: Q306656
- official_api_documentation: https://example.com/api-doc
- use_official_api: true
- require_api_key: true
- results: HTML
- """
- using_tor_proxy: bool
- """Using tor proxy (``true``) or not (``false``) for this engine."""
- send_accept_language_header: bool
- """When this option is activated, the language (locale) that is selected by
- the user is used to build and send a ``Accept-Language`` header in the
- request to the origin search engine."""
- tokens: List[str]
- """A list of secret tokens to make this engine *private*, more details see
- :ref:`private engines`."""
|