diff options
Diffstat (limited to 'searx/engines/libretranslate.py')
| -rw-r--r-- | searx/engines/libretranslate.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/searx/engines/libretranslate.py b/searx/engines/libretranslate.py new file mode 100644 index 000000000..20fa481f5 --- /dev/null +++ b/searx/engines/libretranslate.py @@ -0,0 +1,46 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +"""LibreTranslate (Free and Open Source Machine Translation API)""" + +import random +from json import dumps + +about = { + "website": 'https://libretranslate.com', + "wikidata_id": None, + "official_api_documentation": 'https://libretranslate.com/docs/', + "use_official_api": True, + "require_api_key": False, + "results": 'JSON', +} + +engine_type = 'online_dictionary' +categories = ['general', 'translate'] + +base_url = "https://translate.terraprint.co" +api_key = '' + + +def request(_query, params): + request_url = random.choice(base_url) if isinstance(base_url, list) else base_url + params['url'] = f"{request_url}/translate" + + args = {'source': params['from_lang'][1], 'target': params['to_lang'][1], 'q': params['query']} + if api_key: + args['api_key'] = api_key + params['data'] = dumps(args) + + params['method'] = 'POST' + params['headers'] = {'Content-Type': 'application/json'} + + return params + + +def response(resp): + results = [] + + json_resp = resp.json() + text = json_resp.get('translatedText') + if text: + results.append({'answer': text}) + + return results |