only_show_green_results.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. '''
  2. searx is free software: you can redistribute it and/or modify
  3. it under the terms of the GNU Affero General Public License as published by
  4. the Free Software Foundation, either version 3 of the License, or
  5. (at your option) any later version.
  6. searx is distributed in the hope that it will be useful,
  7. but WITHOUT ANY WARRANTY; without even the implied warranty of
  8. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  9. GNU Affero General Public License for more details.
  10. You should have received a copy of the GNU Affero General Public License
  11. along with searx. If not, see < http://www.gnu.org/licenses/ >.
  12. (C) 2015 by Adam Tauber, <asciimoo@gmail.com>
  13. '''
  14. from flask_babel import gettext
  15. import re
  16. from searx.url_utils import urlunparse, parse_qsl, urlencode
  17. import requests
  18. name = gettext('Only show green hosted results')
  19. description = gettext('Any results not being hosted on green infrastructure will be filtered')
  20. default_on = True
  21. preference_section = 'privacy'
  22. # attach callback to the post search hook
  23. # request: flask request object
  24. # ctx: the whole local context of the pre search hook
  25. def post_search(request, search):
  26. print search
  27. def on_result(request, search, result):
  28. if 'parsed_url' not in result:
  29. return True
  30. print result['url']
  31. # Put a green.html template up to have access over which results are shown or not
  32. # @todo figure out a way to filter results in this callback so we don't need a special template
  33. result['template'] = 'green.html'
  34. # @todo hook up the url to our greencheck tool instead of api here
  35. response = requests.get("https://api.thegreenwebfoundation.org/greencheck/" + result['parsed_url'].netloc)
  36. data = response.json()
  37. #print(data['green'])
  38. result['green'] = data['green']
  39. return True