mirror of
				https://github.com/searxng/searxng.git
				synced 2025-11-03 11:07:07 -05:00 
			
		
		
		
	Implementations of the *traits* of the engines.
Engine's traits are fetched from the origin engine and stored in a JSON file in
the *data folder*.  Most often traits are languages and region codes and their
mapping from SearXNG's representation to the representation in the origin search
engine.
To load traits from the persistence::
    searx.enginelib.traits.EngineTraitsMap.from_data()
For new traits new properties can be added to the class::
    searx.enginelib.traits.EngineTraits
.. hint::
   Implementation is downward compatible to the deprecated *supported_languages
   method* from the vintage implementation.
   The vintage code is tagged as *deprecated* an can be removed when all engines
   has been ported to the *traits method*.
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
		
	
			
		
			
				
	
	
		
			53 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# SPDX-License-Identifier: AGPL-3.0-or-later
 | 
						|
# lint: pylint
 | 
						|
"""This module holds the *data* created by::
 | 
						|
 | 
						|
  make data.all
 | 
						|
 | 
						|
"""
 | 
						|
 | 
						|
__all__ = [
 | 
						|
    'ENGINE_TRAITS',
 | 
						|
    'CURRENCIES',
 | 
						|
    'USER_AGENTS',
 | 
						|
    'EXTERNAL_URLS',
 | 
						|
    'WIKIDATA_UNITS',
 | 
						|
    'EXTERNAL_BANGS',
 | 
						|
    'OSM_KEYS_TAGS',
 | 
						|
    'ENGINE_DESCRIPTIONS',
 | 
						|
    'ahmia_blacklist_loader',
 | 
						|
]
 | 
						|
 | 
						|
import json
 | 
						|
from pathlib import Path
 | 
						|
 | 
						|
data_dir = Path(__file__).parent
 | 
						|
 | 
						|
 | 
						|
def _load(filename):
 | 
						|
    with open(data_dir / filename, encoding='utf-8') as f:
 | 
						|
        return json.load(f)
 | 
						|
 | 
						|
 | 
						|
def ahmia_blacklist_loader():
 | 
						|
    """Load data from `ahmia_blacklist.txt` and return a list of MD5 values of onion
 | 
						|
    names.  The MD5 values are fetched by::
 | 
						|
 | 
						|
      searxng_extra/update/update_ahmia_blacklist.py
 | 
						|
 | 
						|
    This function is used by :py:mod:`searx.plugins.ahmia_filter`.
 | 
						|
 | 
						|
    """
 | 
						|
    with open(data_dir / 'ahmia_blacklist.txt', encoding='utf-8') as f:
 | 
						|
        return f.read().split()
 | 
						|
 | 
						|
 | 
						|
CURRENCIES = _load('currencies.json')
 | 
						|
USER_AGENTS = _load('useragents.json')
 | 
						|
EXTERNAL_URLS = _load('external_urls.json')
 | 
						|
WIKIDATA_UNITS = _load('wikidata_units.json')
 | 
						|
EXTERNAL_BANGS = _load('external_bangs.json')
 | 
						|
OSM_KEYS_TAGS = _load('osm_keys_tags.json')
 | 
						|
ENGINE_DESCRIPTIONS = _load('engine_descriptions.json')
 | 
						|
ENGINE_TRAITS = _load('engine_traits.json')
 |