summaryrefslogtreecommitdiff
path: root/searx/engines
diff options
context:
space:
mode:
authorAlexandre Flament <alex@al-f.net>2020-12-17 11:49:43 +0100
committerGitHub <noreply@github.com>2020-12-17 11:49:43 +0100
commit9b27935f71ea94ba034d73c09c1f18df05fd33b6 (patch)
treec1e7b116220d72f9e541ff4e7e5b108dd8a2f2aa /searx/engines
parent13a2b1a44d0e216d3750519239fab2c0abb142e4 (diff)
parent02fc4147ce745325ff25146a8085a915a5d3cacd (diff)
Merge pull request #2225 from dalf/processors
Processors
Diffstat (limited to 'searx/engines')
-rw-r--r--searx/engines/__init__.py10
-rw-r--r--searx/engines/command.py2
-rw-r--r--searx/engines/currency_convert.py42
-rw-r--r--searx/engines/dictzone.py24
-rw-r--r--searx/engines/translated.py26
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