123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- # SPDX-License-Identifier: AGPL-3.0-or-later
- """MyMemory Translated
- """
- import urllib.parse
- from searx.result_types import EngineResults
- # about
- about = {
- "website": 'https://mymemory.translated.net/',
- "wikidata_id": None,
- "official_api_documentation": 'https://mymemory.translated.net/doc/spec.php',
- "use_official_api": True,
- "require_api_key": False,
- "results": 'JSON',
- }
- engine_type = 'online_dictionary'
- categories = ['general', 'translate']
- api_url = "https://api.mymemory.translated.net"
- web_url = "https://mymemory.translated.net"
- weight = 100
- https_support = True
- api_key = ''
- def request(query, params): # pylint: disable=unused-argument
- args = {"q": params["query"], "langpair": f"{params['from_lang'][1]}|{params['to_lang'][1]}"}
- if api_key:
- args["key"] = api_key
- params['url'] = f"{api_url}/get?{urllib.parse.urlencode(args)}"
- return params
- def response(resp) -> EngineResults:
- results = EngineResults()
- data = resp.json()
- args = {
- "q": resp.search_params["query"],
- "lang": resp.search_params.get("searxng_locale", "en"), # ui language
- "sl": resp.search_params['from_lang'][1],
- "tl": resp.search_params['to_lang'][1],
- }
- link = f"{web_url}/search.php?{urllib.parse.urlencode(args)}"
- text = data['responseData']['translatedText']
- examples = [f"{m['segment']} : {m['translation']}" for m in data['matches'] if m['translation'] != text]
- item = results.types.Translations.Item(text=text, examples=examples)
- results.add(results.types.Translations(translations=[item], url=link))
- return results
|