123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- # SPDX-License-Identifier: AGPL-3.0-or-later
- """media.ccc.de"""
- import datetime
- from urllib.parse import urlencode
- from dateutil import parser
- about = {
- 'website': 'https://media.ccc.de',
- 'official_api_documentation': 'https://github.com/voc/voctoweb',
- 'use_official_api': True,
- 'require_api_key': False,
- 'results': 'JSON',
- }
- categories = ['videos']
- paging = True
- api_url = "https://api.media.ccc.de"
- def request(query, params):
- args = {'q': query, 'page': params['pageno']}
- params['url'] = f"{api_url}/public/events/search?{urlencode(args)}"
- return params
- def response(resp):
- results = []
- for item in resp.json()['events']:
- publishedDate = None
- if item.get('date'):
- publishedDate = parser.parse(item['date'])
- iframe_src = None
- for rec in item['recordings']:
- if rec['mime_type'].startswith('video'):
- if not iframe_src:
- iframe_src = rec['recording_url']
- elif rec['mime_type'] == 'video/mp4':
- # prefer mp4 (minimal data rates)
- iframe_src = rec['recording_url']
- results.append(
- {
- 'template': 'videos.html',
- 'url': item['frontend_link'],
- 'title': item['title'],
- 'content': item['description'],
- 'thumbnail': item['thumb_url'],
- 'publishedDate': publishedDate,
- 'length': datetime.timedelta(seconds=item['length']),
- 'iframe_src': iframe_src,
- }
- )
- return results
|