diff options
author | Alexandre Flament <alex@al-f.net> | 2020-12-16 16:20:03 +0100 |
---|---|---|
committer | Alexandre Flament <alex@al-f.net> | 2020-12-17 11:39:36 +0100 |
commit | 02fc4147ce745325ff25146a8085a915a5d3cacd (patch) | |
tree | c1e7b116220d72f9e541ff4e7e5b108dd8a2f2aa /searx | |
parent | 7ec8bc3ea76516e33318c67165161df5c1efdd36 (diff) | |
download | searxng-02fc4147ce745325ff25146a8085a915a5d3cacd.tar.gz searxng-02fc4147ce745325ff25146a8085a915a5d3cacd.zip |
[mod] dictzone, translated, currency_convert: use engine_type online_curency and online_dictionnary
Diffstat (limited to 'searx')
-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 |
3 files changed, 12 insertions, 80 deletions
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 |