137 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			137 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|  | # SPDX-License-Identifier: AGPL-3.0-or-later | ||
|  | # lint: pylint | ||
|  | """Engine related implementations
 | ||
|  | 
 | ||
|  | .. note:: | ||
|  | 
 | ||
|  |    The long term goal is to modularize all relevant implementations to the | ||
|  |    engines here in this Python package.  In addition to improved modularization, | ||
|  |    this will also be necessary in part because the probability of circular | ||
|  |    imports will increase due to the increased typification of implementations in | ||
|  |    the future. | ||
|  | 
 | ||
|  |    ToDo: | ||
|  | 
 | ||
|  |    - move :py:obj:`searx.engines.load_engine` to a new module `searx.enginelib`. | ||
|  | """
 | ||
|  | 
 | ||
|  | 
 | ||
|  | from __future__ import annotations | ||
|  | from typing import Union, Dict, 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 (:origin:`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] | ||
|  |     """Tabs, in which the engine is working.""" | ||
|  | 
 | ||
|  |     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 fileds 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 | ||
|  |     """
 |