podcastindex.py 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. # SPDX-License-Identifier: AGPL-3.0-or-later
  2. # lint: pylint
  3. """Podcast Index
  4. """
  5. from urllib.parse import quote_plus
  6. from datetime import datetime
  7. about = {
  8. 'website': 'https://podcastindex.org',
  9. 'official_api_documentation': None, # requires an account
  10. 'use_official_api': False,
  11. 'require_api_key': False,
  12. 'results': 'JSON',
  13. }
  14. categories = []
  15. base_url = "https://podcastindex.org"
  16. def request(query, params):
  17. params['url'] = f"{base_url}/api/search/byterm?q={quote_plus(query)}"
  18. return params
  19. def response(resp):
  20. results = []
  21. json = resp.json()
  22. for result in json['feeds']:
  23. results.append(
  24. {
  25. 'url': result['link'],
  26. 'title': result['title'],
  27. 'content': result['description'],
  28. 'thumbnail': result['image'],
  29. 'publishedDate': datetime.utcfromtimestamp(result['newestItemPubdate']),
  30. 'metadata': f"{result['author']}, {result['episodeCount']} episodes",
  31. }
  32. )
  33. return results