omnom.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. # SPDX-License-Identifier: AGPL-3.0-or-later
  2. """
  3. Omnom (General)
  4. """
  5. from json import loads
  6. from urllib.parse import urlencode
  7. # about
  8. about = {
  9. "website": 'https://github.com/asciimoo/omnom',
  10. "wikidata_id": None,
  11. "official_api_documentation": 'http://your.omnom.host/api',
  12. "use_official_api": True,
  13. "require_api_key": False,
  14. "results": 'JSON',
  15. }
  16. # engine dependent config
  17. categories = ['general']
  18. paging = True
  19. # search-url
  20. base_url = None
  21. search_path = 'bookmarks?{query}&pageno={pageno}&format=json'
  22. bookmark_path = 'bookmark?id='
  23. # do search-request
  24. def request(query, params):
  25. params['url'] = base_url +\
  26. search_path.format(query=urlencode({'query': query}),
  27. pageno=params['pageno'])
  28. return params
  29. # get response from search-request
  30. def response(resp):
  31. results = []
  32. json = loads(resp.text)
  33. # parse results
  34. for r in json.get('Bookmarks', {}):
  35. content = r['url']
  36. if r.get('notes'):
  37. content += ' - ' + r['notes']
  38. results.append({
  39. 'title': r['title'],
  40. 'content': content,
  41. 'url': base_url + bookmark_path + str(r['id']),
  42. })
  43. # return results
  44. return results