mediathekviewweb.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. # SPDX-License-Identifier: AGPL-3.0-or-later
  2. """MediathekViewWeb (API)
  3. """
  4. # pylint: disable=missing-function-docstring
  5. import datetime
  6. from json import loads, dumps
  7. about = {
  8. "website": 'https://mediathekviewweb.de/',
  9. "wikidata_id": 'Q27877380',
  10. "official_api_documentation": 'https://gist.github.com/bagbag/a2888478d27de0e989cf777f81fb33de',
  11. "use_official_api": True,
  12. "require_api_key": False,
  13. "results": 'JSON',
  14. }
  15. categories = ['videos']
  16. paging = True
  17. time_range_support = False
  18. safesearch = False
  19. def request(query, params):
  20. params['url'] = 'https://mediathekviewweb.de/api/query'
  21. params['method'] = 'POST'
  22. params['headers']['Content-type'] = 'text/plain'
  23. params['data'] = dumps({
  24. 'queries' : [
  25. {
  26. 'fields' : [
  27. 'title',
  28. 'topic',
  29. ],
  30. 'query' : query
  31. },
  32. ],
  33. 'sortBy' : 'timestamp',
  34. 'sortOrder' : 'desc',
  35. 'future' : True,
  36. 'offset' : (params['pageno'] - 1 )* 10,
  37. 'size' : 10
  38. })
  39. return params
  40. def response(resp):
  41. resp = loads(resp.text)
  42. mwv_result = resp['result']
  43. mwv_result_list = mwv_result['results']
  44. results = []
  45. for item in mwv_result_list:
  46. item['hms'] = str(datetime.timedelta(seconds=item['duration']))
  47. results.append({
  48. 'url' : item['url_video_hd'],
  49. 'title' : "%(channel)s: %(title)s (%(hms)s)" % item,
  50. 'length' : item['hms'],
  51. 'content' : "%(description)s" % item,
  52. })
  53. return results