Browse Source

[enh] add engine MediathekViewWeb (API)

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
Markus Heiser 4 years ago
parent
commit
bc1be3f0e9
3 changed files with 74 additions and 1 deletions
  1. 2 1
      Makefile
  2. 68 0
      searx/engines/mediathekviewweb.py
  3. 4 0
      searx/settings.yml

+ 2 - 1
Makefile

@@ -193,7 +193,8 @@ PYLINT_FILES=\
 	searx/engines/google.py \
 	searx/engines/google_news.py \
 	searx/engines/google_videos.py \
-	searx/engines/google_images.py
+	searx/engines/google_images.py \
+	searx/engines/mediathekviewweb.py
 
 test.pylint: pyenvinstall
 	$(call cmd,pylint,$(PYLINT_FILES))

+ 68 - 0
searx/engines/mediathekviewweb.py

@@ -0,0 +1,68 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""MediathekViewWeb (API)
+
+"""
+
+# pylint: disable=missing-function-docstring
+
+import datetime
+from json import loads, dumps
+
+about = {
+    "website": 'https://mediathekviewweb.de/',
+    "wikidata_id": 'Q27877380',
+    "official_api_documentation": 'https://gist.github.com/bagbag/a2888478d27de0e989cf777f81fb33de',
+    "use_official_api": True,
+    "require_api_key": False,
+    "results": 'JSON',
+}
+
+categories = ['videos']
+paging = True
+time_range_support = False
+safesearch = False
+
+def request(query, params):
+
+    params['url'] = 'https://mediathekviewweb.de/api/query'
+    params['method'] = 'POST'
+    params['headers']['Content-type'] = 'text/plain'
+    params['data'] = dumps({
+        'queries' : [
+	    {
+	        'fields' : [
+		    'title',
+		    'topic',
+	        ],
+	    'query' : query
+	    },
+        ],
+        'sortBy' : 'timestamp',
+        'sortOrder' : 'desc',
+        'future' : True,
+        'offset' : (params['pageno'] - 1 )* 10,
+        'size' : 10
+    })
+    return params
+
+def response(resp):
+
+    resp = loads(resp.text)
+
+    mwv_result = resp['result']
+    mwv_result_list = mwv_result['results']
+
+    results = []
+
+    for item in mwv_result_list:
+
+        item['hms'] = str(datetime.timedelta(seconds=item['duration']))
+
+        results.append({
+            'url' : item['url_video_hd'],
+            'title' : "%(channel)s: %(title)s (%(hms)s)" % item,
+            'length' : item['hms'],
+            'content' : "%(description)s" % item,
+        })
+
+    return results

+ 4 - 0
searx/settings.yml

@@ -1274,6 +1274,10 @@ engines:
     categories: videos
     disabled : True
 
+  - name : mediathekviewweb
+    engine : mediathekviewweb
+    shortcut : mvw
+
 #  - name : yacy
 #    engine : yacy
 #    shortcut : ya