From fbbd4cc21f5daf0c48b09175d95e8cb029e46f87 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thorben=20G=C3=BCnther?= <admin@xenrox.net>
Date: Sat, 13 Feb 2021 19:47:33 +0100
Subject: [PATCH] Improve peertube searching

At the moment videos without a description are not shown - setting
default content to "" fixes this.
Another current bug is that thumbnails are not displayed. This is caused
by a double slash in the url. For this every trailing slash is now
stripped (for backwards compatibility) and the API response is correctly
parsed.
---
 searx/engines/peertube.py | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/searx/engines/peertube.py b/searx/engines/peertube.py
index b5b17c6f2..31b4b81ec 100644
--- a/searx/engines/peertube.py
+++ b/searx/engines/peertube.py
@@ -21,14 +21,15 @@ about = {
 # engine dependent config
 categories = ["videos"]
 paging = True
-base_url = "https://peer.tube/"
-supported_languages_url = base_url + "api/v1/videos/languages"
+base_url = "https://peer.tube"
+supported_languages_url = base_url + "/api/v1/videos/languages"
 
 
 # do search-request
 def request(query, params):
+    sanitized_url = base_url.rstrip("/")
     pageno = (params["pageno"] - 1) * 15
-    search_url = base_url + "api/v1/search/videos/?pageno={pageno}&{query}"
+    search_url = sanitized_url + "/api/v1/search/videos/?pageno={pageno}&{query}"
     query_dict = {"search": query}
     language = params["language"].split("-")[0]
     # pylint: disable=undefined-variable
@@ -46,6 +47,7 @@ def _get_offset_from_pageno(pageno):
 
 # get response from search-request
 def response(resp):
+    sanitized_url = base_url.rstrip("/")
     results = []
 
     search_res = loads(resp.text)
@@ -53,7 +55,7 @@ def response(resp):
     embedded_url = (
         '<iframe width="560" height="315" sandbox="allow-same-origin allow-scripts allow-popups" '
         + 'src="'
-        + base_url
+        + sanitized_url
         + '{embed_path}" frameborder="0" allowfullscreen></iframe>'
     )
     # return empty array if there are no results
@@ -63,15 +65,15 @@ def response(resp):
     # parse results
     for res in search_res["data"]:
         title = res["name"]
-        url = base_url + "/videos/watch/" + res["uuid"]
+        url = sanitized_url + "/videos/watch/" + res["uuid"]
         description = res["description"]
         if description:
             content = html_to_text(res["description"])
         else:
-            content = None
-        thumbnail = base_url + res["thumbnailPath"]
+            content = ""
+        thumbnail = sanitized_url + res["thumbnailPath"]
         publishedDate = datetime.strptime(res["publishedAt"], "%Y-%m-%dT%H:%M:%S.%fZ")
-        embedded = embedded_url.format(embed_path=res["embedPath"][1:])
+        embedded = embedded_url.format(embed_path=res["embedPath"])
 
         results.append(
             {