selfhst.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. # SPDX-License-Identifier: AGPL-3.0-or-later
  2. """selfh.st/icons - A collection of logos for self-hosted dashboards and
  3. documentation"""
  4. from dateutil import parser
  5. about = {
  6. 'website': 'https://selfh.st/icons/',
  7. 'official_api_documentation': 'https://selfh.st/icons-about/',
  8. "use_official_api": True,
  9. "require_api_key": False,
  10. "results": 'JSON',
  11. }
  12. categories = ['images']
  13. icons_list_url = 'https://cdn.selfh.st/directory/icons.json'
  14. icons_cdn_base_url = 'https://cdn.jsdelivr.net'
  15. def request(query, params):
  16. params['url'] = icons_list_url
  17. params['query'] = query
  18. return params
  19. def response(resp):
  20. results = []
  21. query_parts = resp.search_params['query'].lower().split(' ')
  22. for item in resp.json():
  23. keyword = item['Reference'].lower()
  24. if not any(query_part in keyword for query_part in query_parts):
  25. continue
  26. img_format = None
  27. for format_name in ('SVG', 'PNG', 'WebP'):
  28. if item[format_name] == 'Yes':
  29. img_format = format_name.lower()
  30. break
  31. img_src = f'{icons_cdn_base_url}/gh/selfhst/icons/{img_format}/{item["Reference"]}.{img_format}'
  32. result = {
  33. 'template': 'images.html',
  34. 'url': img_src,
  35. 'title': item['Name'],
  36. 'content': '',
  37. 'img_src': img_src,
  38. 'img_format': img_format,
  39. 'publishedDate': parser.parse(item['CreatedAt']),
  40. }
  41. results.append(result)
  42. return results