summaryrefslogtreecommitdiff
path: root/searx/engines/invidious.py
diff options
context:
space:
mode:
Diffstat (limited to 'searx/engines/invidious.py')
-rw-r--r--searx/engines/invidious.py42
1 files changed, 29 insertions, 13 deletions
diff --git a/searx/engines/invidious.py b/searx/engines/invidious.py
index 6ea942699..61a6e5a19 100644
--- a/searx/engines/invidious.py
+++ b/searx/engines/invidious.py
@@ -1,16 +1,22 @@
-# Invidious (Videos)
-#
-# @website https://invidio.us/
-# @provide-api yes (https://github.com/omarroth/invidious/wiki/API)
-#
-# @using-api yes
-# @results JSON
-# @stable yes
-# @parse url, title, content, publishedDate, thumbnail, embedded, author, length
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ Invidious (Videos)
+"""
from urllib.parse import quote_plus
from dateutil import parser
import time
+import random
+
+# about
+about = {
+ "website": 'https://instances.invidio.us/',
+ "wikidata_id": 'Q79343316',
+ "official_api_documentation": 'https://github.com/omarroth/invidious/wiki/API',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
# engine dependent config
categories = ["videos", "music"]
@@ -18,19 +24,29 @@ paging = True
language_support = True
time_range_support = True
+
# search-url
-base_url = "https://invidio.us/"
+
+base_url = ''
+base_url_rand = ''
# do search-request
def request(query, params):
+ global base_url_rand
time_range_dict = {
"day": "today",
"week": "week",
"month": "month",
"year": "year",
}
- search_url = base_url + "api/v1/search?q={query}"
+
+ if isinstance(base_url, list):
+ base_url_rand = random.choice(base_url)
+ else:
+ base_url_rand = base_url
+
+ search_url = base_url_rand + "api/v1/search?q={query}"
params["url"] = search_url.format(
query=quote_plus(query)
) + "&page={pageno}".format(pageno=params["pageno"])
@@ -56,12 +72,12 @@ def response(resp):
embedded_url = (
'<iframe width="540" height="304" '
+ 'data-src="'
- + base_url
+ + base_url_rand
+ 'embed/{videoid}" '
+ 'frameborder="0" allowfullscreen></iframe>'
)
- base_invidious_url = base_url + "watch?v="
+ base_invidious_url = base_url_rand + "watch?v="
for result in search_results:
rtype = result.get("type", None)