summaryrefslogtreecommitdiff
path: root/searx/engines
diff options
context:
space:
mode:
authorBnyro <bnyro@tutanota.com>2024-04-25 18:47:39 +0200
committerMarkus Heiser <markus.heiser@darmarIT.de>2024-04-27 08:55:26 +0200
commit42b58eb4489e0493dc97a4a35b49921539c36d90 (patch)
tree72aa777c78291110b7deff6028a0f29e6f361b1d /searx/engines
parenta56b4a164819359e93af65c871e8762096dfaf05 (diff)
[feat] media.ccc.de: implement module with pagination and iframe
Diffstat (limited to 'searx/engines')
-rw-r--r--searx/engines/ccc_media.py54
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