translated.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. """
  2. MyMemory Translated
  3. @website https://mymemory.translated.net/
  4. @provide-api yes (https://mymemory.translated.net/doc/spec.php)
  5. @using-api yes
  6. @results JSON
  7. @stable yes
  8. @parse url, title, content
  9. """
  10. import re
  11. from searx.utils import is_valid_lang
  12. categories = ['general']
  13. url = 'https://api.mymemory.translated.net/get?q={query}&langpair={from_lang}|{to_lang}{key}'
  14. web_url = 'https://mymemory.translated.net/en/{from_lang}/{to_lang}/{query}'
  15. weight = 100
  16. parser_re = re.compile('.*?([a-z]+)-([a-z]+) (.{2,})$', re.I)
  17. api_key = ''
  18. def request(query, params):
  19. m = parser_re.match(query)
  20. if not m:
  21. return params
  22. from_lang, to_lang, query = m.groups()
  23. from_lang = is_valid_lang(from_lang)
  24. to_lang = is_valid_lang(to_lang)
  25. if not from_lang or not to_lang:
  26. return params
  27. if api_key:
  28. key_form = '&key=' + api_key
  29. else:
  30. key_form = ''
  31. params['url'] = url.format(from_lang=from_lang[1],
  32. to_lang=to_lang[1],
  33. query=query,
  34. key=key_form)
  35. params['query'] = query
  36. params['from_lang'] = from_lang
  37. params['to_lang'] = to_lang
  38. return params
  39. def response(resp):
  40. results = []
  41. results.append({
  42. 'url': web_url.format(
  43. from_lang=resp.search_params['from_lang'][2],
  44. to_lang=resp.search_params['to_lang'][2],
  45. query=resp.search_params['query']),
  46. 'title': '[{0}-{1}] {2}'.format(
  47. resp.search_params['from_lang'][1],
  48. resp.search_params['to_lang'][1],
  49. resp.search_params['query']),
  50. 'content': resp.json()['responseData']['translatedText']
  51. })
  52. return results