translated.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. https_support = True
  17. parser_re = re.compile('.*?([a-z]+)-([a-z]+) (.{2,})$', re.I)
  18. api_key = ''
  19. def request(query, params):
  20. m = parser_re.match(query)
  21. if not m:
  22. return params
  23. from_lang, to_lang, query = m.groups()
  24. from_lang = is_valid_lang(from_lang)
  25. to_lang = is_valid_lang(to_lang)
  26. if not from_lang or not to_lang:
  27. return params
  28. if api_key:
  29. key_form = '&key=' + api_key
  30. else:
  31. key_form = ''
  32. params['url'] = url.format(from_lang=from_lang[1],
  33. to_lang=to_lang[1],
  34. query=query,
  35. key=key_form)
  36. params['query'] = query
  37. params['from_lang'] = from_lang
  38. params['to_lang'] = to_lang
  39. return params
  40. def response(resp):
  41. results = []
  42. results.append({
  43. 'url': web_url.format(
  44. from_lang=resp.search_params['from_lang'][2],
  45. to_lang=resp.search_params['to_lang'][2],
  46. query=resp.search_params['query']),
  47. 'title': '[{0}-{1}] {2}'.format(
  48. resp.search_params['from_lang'][1],
  49. resp.search_params['to_lang'][1],
  50. resp.search_params['query']),
  51. 'content': resp.json()['responseData']['translatedText']
  52. })
  53. return results