diff options
| author | Bnyro <bnyro@tutanota.com> | 2024-04-25 18:47:39 +0200 |
|---|---|---|
| committer | Markus Heiser <markus.heiser@darmarIT.de> | 2024-04-27 08:55:26 +0200 |
| commit | 42b58eb4489e0493dc97a4a35b49921539c36d90 (patch) | |
| tree | 72aa777c78291110b7deff6028a0f29e6f361b1d /searx/engines | |
| parent | a56b4a164819359e93af65c871e8762096dfaf05 (diff) | |
[feat] media.ccc.de: implement module with pagination and iframe
Diffstat (limited to 'searx/engines')
| -rw-r--r-- | searx/engines/ccc_media.py | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/searx/engines/ccc_media.py b/searx/engines/ccc_media.py new file mode 100644 index 000000000..1b5235220 --- /dev/null +++ b/searx/engines/ccc_media.py @@ -0,0 +1,54 @@ +# 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 + if len(item['recordings']) > 0: + iframe_src = item['recordings'][0]['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 |