diff options
| author | Alexandre Flament <alex@al-f.net> | 2020-12-17 11:49:43 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-12-17 11:49:43 +0100 |
| commit | 9b27935f71ea94ba034d73c09c1f18df05fd33b6 (patch) | |
| tree | c1e7b116220d72f9e541ff4e7e5b108dd8a2f2aa /searx/engines | |
| parent | 13a2b1a44d0e216d3750519239fab2c0abb142e4 (diff) | |
| parent | 02fc4147ce745325ff25146a8085a915a5d3cacd (diff) | |
Merge pull request #2225 from dalf/processors
Processors
Diffstat (limited to 'searx/engines')
| -rw-r--r-- | searx/engines/__init__.py | 10 | ||||
| -rw-r--r-- | searx/engines/command.py | 2 | ||||
| -rw-r--r-- | searx/engines/currency_convert.py | 42 | ||||
| -rw-r--r-- | searx/engines/dictzone.py | 24 | ||||
| -rw-r--r-- | searx/engines/translated.py | 26 |
5 files changed, 19 insertions, 85 deletions
diff --git a/searx/engines/__init__.py b/searx/engines/__init__.py index b2a9b25a4..f2b7c5a84 100644 --- a/searx/engines/__init__.py +++ b/searx/engines/__init__.py @@ -53,7 +53,7 @@ engine_default_args = {'paging': False, 'suspend_end_time': 0, 'continuous_errors': 0, 'time_range_support': False, - 'offline': False, + 'engine_type': 'online', 'display_error_messages': True, 'tokens': []} @@ -142,7 +142,9 @@ def load_engine(engine_data): 'errors': 0 } - if not engine.offline: + engine_type = getattr(engine, 'engine_type', 'online') + + if engine_type != 'offline': engine.stats['page_load_time'] = 0 engine.stats['page_load_count'] = 0 @@ -209,7 +211,7 @@ def get_engines_stats(preferences): else: score = score_per_result = 0.0 - if not engine.offline: + if engine.engine_type != 'offline': load_times = 0 if engine.stats['page_load_count'] != 0: load_times = engine.stats['page_load_time'] / float(engine.stats['page_load_count']) # noqa @@ -300,7 +302,7 @@ def initialize_engines(engine_list): def _set_https_support_for_engine(engine): # check HTTPS support if it is not disabled - if not engine.offline and not hasattr(engine, 'https_support'): + if engine.engine_type != 'offline' and not hasattr(engine, 'https_support'): params = engine.request('http_test', { 'method': 'GET', 'headers': {}, diff --git a/searx/engines/command.py b/searx/engines/command.py index 0268d52eb..6321e0004 100644 --- a/searx/engines/command.py +++ b/searx/engines/command.py @@ -23,7 +23,7 @@ from threading import Thread from searx import logger -offline = True +engine_type = 'offline' paging = True command = [] delimiter = {} diff --git a/searx/engines/currency_convert.py b/searx/engines/currency_convert.py index 87e21d0af..7098dd3c7 100644 --- a/searx/engines/currency_convert.py +++ b/searx/engines/currency_convert.py @@ -1,54 +1,16 @@ import json -import re -import unicodedata -from searx.data import CURRENCIES # NOQA +engine_type = 'online_currency' categories = [] url = 'https://duckduckgo.com/js/spice/currency/1/{0}/{1}' weight = 100 -parser_re = re.compile('.*?(\\d+(?:\\.\\d+)?) ([^.0-9]+) (?:in|to) ([^.0-9]+)', re.I) https_support = True -def normalize_name(name): - name = name.lower().replace('-', ' ').rstrip('s') - name = re.sub(' +', ' ', name) - return unicodedata.normalize('NFKD', name).lower() - - -def name_to_iso4217(name): - global CURRENCIES - - name = normalize_name(name) - currency = CURRENCIES['names'].get(name, [name]) - return currency[0] - - -def iso4217_to_name(iso4217, language): - global CURRENCIES - - return CURRENCIES['iso4217'].get(iso4217, {}).get(language, iso4217) - - def request(query, params): - m = parser_re.match(query) - if not m: - # wrong query - return params - amount, from_currency, to_currency = m.groups() - amount = float(amount) - from_currency = name_to_iso4217(from_currency.strip()) - to_currency = name_to_iso4217(to_currency.strip()) - - params['url'] = url.format(from_currency, to_currency) - params['amount'] = amount - params['from'] = from_currency - params['to'] = to_currency - params['from_name'] = iso4217_to_name(from_currency, 'en') - params['to_name'] = iso4217_to_name(to_currency, 'en') - + params['url'] = url.format(params['from'], params['to']) return params diff --git a/searx/engines/dictzone.py b/searx/engines/dictzone.py index 727eb6598..5e6f688a1 100644 --- a/searx/engines/dictzone.py +++ b/searx/engines/dictzone.py @@ -9,36 +9,24 @@ @parse url, title, content """ -import re from urllib.parse import urljoin from lxml import html -from searx.utils import is_valid_lang, eval_xpath +from searx.utils import eval_xpath + +engine_type = 'online_dictionnary' categories = ['general'] url = 'https://dictzone.com/{from_lang}-{to_lang}-dictionary/{query}' weight = 100 -parser_re = re.compile('.*?([a-z]+)-([a-z]+) ([^ ]+)$', re.I) results_xpath = './/table[@id="r"]/tr' https_support = True def request(query, params): - m = parser_re.match(query) - if not m: - return params - - from_lang, to_lang, query = m.groups() - - from_lang = is_valid_lang(from_lang) - to_lang = is_valid_lang(to_lang) - - if not from_lang or not to_lang: - return params - - params['url'] = url.format(from_lang=from_lang[2], - to_lang=to_lang[2], - query=query) + params['url'] = url.format(from_lang=params['from_lang'][2], + to_lang=params['to_lang'][2], + query=params['query']) return params diff --git a/searx/engines/translated.py b/searx/engines/translated.py index 75b8b5f42..2706e3617 100644 --- a/searx/engines/translated.py +++ b/searx/engines/translated.py @@ -8,44 +8,26 @@ @stable yes @parse url, title, content """ -import re -from searx.utils import is_valid_lang +engine_type = 'online_dictionnary' categories = ['general'] url = 'https://api.mymemory.translated.net/get?q={query}&langpair={from_lang}|{to_lang}{key}' web_url = 'https://mymemory.translated.net/en/{from_lang}/{to_lang}/{query}' weight = 100 https_support = True -parser_re = re.compile('.*?([a-z]+)-([a-z]+) (.{2,})$', re.I) api_key = '' def request(query, params): - m = parser_re.match(query) - if not m: - return params - - from_lang, to_lang, query = m.groups() - - from_lang = is_valid_lang(from_lang) - to_lang = is_valid_lang(to_lang) - - if not from_lang or not to_lang: - return params - if api_key: key_form = '&key=' + api_key else: key_form = '' - params['url'] = url.format(from_lang=from_lang[1], - to_lang=to_lang[1], - query=query, + params['url'] = url.format(from_lang=params['from_lang'][1], + to_lang=params['to_lang'][1], + query=params['query'], key=key_form) - params['query'] = query - params['from_lang'] = from_lang - params['to_lang'] = to_lang - return params |