mirror of
				https://github.com/searxng/searxng.git
				synced 2025-11-03 19:17:07 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			146 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			146 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# SPDX-License-Identifier: AGPL-3.0-or-later
 | 
						|
# lint: pylint
 | 
						|
"""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`."""
 |