logo

searx

My custom branche(s) on searx, a meta-search engine git clone https://hacktivis.me/git/searx.git

answerer.py (1243B)


  1. from sys import version_info
  2. from functools import reduce
  3. from operator import mul
  4. from flask_babel import gettext
  5. if version_info[0] == 3:
  6. unicode = str
  7. keywords = ('min',
  8. 'max',
  9. 'avg',
  10. 'sum',
  11. 'prod')
  12. # required answerer function
  13. # can return a list of results (any result type) for a given query
  14. def answer(query):
  15. parts = query.query.split()
  16. if len(parts) < 2:
  17. return []
  18. try:
  19. args = list(map(float, parts[1:]))
  20. except:
  21. return []
  22. func = parts[0]
  23. answer = None
  24. if func == b'min':
  25. answer = min(args)
  26. elif func == b'max':
  27. answer = max(args)
  28. elif func == b'avg':
  29. answer = sum(args) / len(args)
  30. elif func == b'sum':
  31. answer = sum(args)
  32. elif func == b'prod':
  33. answer = reduce(mul, args, 1)
  34. if answer is None:
  35. return []
  36. return [{'answer': unicode(answer)}]
  37. # required answerer function
  38. # returns information about the answerer
  39. def self_info():
  40. return {'name': gettext('Statistics functions'),
  41. 'description': gettext('Compute {functions} of the arguments').format(functions='/'.join(keywords)),
  42. 'examples': ['avg 123 548 2.04 24.2']}