on master help sign in
[fix] Invidious engine by enabling requests by randomly picking amongst working instances
2dff388mrwormo
searx/engines/invidious.py+15−4
@@ -11,6 +11,7 @@
11from urllib.parse import quote_plus
11from urllib.parse import quote_plus
12from dateutil import parser
12from dateutil import parser
13import time
13import time
14+import random
14
15
15# engine dependent config
16# engine dependent config
16categories = ["videos", "music"]
17categories = ["videos", "music"]
@@ -18,19 +19,29 @@ paging = True
18language_support = True
19language_support = True
19time_range_support = True
20time_range_support = True
20
21
22+
21# search-url
23# search-url
24+
22−base_url = "https://invidio.us/"
25+base_url = ''
26+base_url_rand = ''
23
27
24
28
25# do search-request
29# do search-request
26def request(query, params):
30def request(query, params):
31+ global base_url_rand
27 time_range_dict = {
32 time_range_dict = {
28 "day": "today",
33 "day": "today",
29 "week": "week",
34 "week": "week",
30 "month": "month",
35 "month": "month",
31 "year": "year",
36 "year": "year",
32 }
37 }
38+
39+ if isinstance(base_url, list):
40+ base_url_rand = random.choice(base_url)
41+ else:
42+ base_url_rand = base_url
43+
33− search_url = base_url + "api/v1/search?q={query}"
44+ search_url = base_url_rand + "api/v1/search?q={query}"
34 params["url"] = search_url.format(
45 params["url"] = search_url.format(
35 query=quote_plus(query)
46 query=quote_plus(query)
36 ) + "&page={pageno}".format(pageno=params["pageno"])
47 ) + "&page={pageno}".format(pageno=params["pageno"])
@@ -56,12 +67,12 @@ def response(resp):
56 embedded_url = (
67 embedded_url = (
57 '<iframe width="540" height="304" '
68 '<iframe width="540" height="304" '
58 + 'data-src="'
69 + 'data-src="'
59− + base_url
70+ + base_url_rand
60 + 'embed/{videoid}" '
71 + 'embed/{videoid}" '
61 + 'frameborder="0" allowfullscreen></iframe>'
72 + 'frameborder="0" allowfullscreen></iframe>'
62 )
73 )
63
74
64− base_invidious_url = base_url + "watch?v="
75+ base_invidious_url = base_url_rand + "watch?v="
65
76
66 for result in search_results:
77 for result in search_results:
67 rtype = result.get("type", None)
78 rtype = result.get("type", None)
searx/settings.yml+3−1
@@ -522,7 +522,9 @@ engines:
522
522
523 - name : invidious
523 - name : invidious
524 engine : invidious
524 engine : invidious
525− base_url : 'https://invidio.us/'
525+ base_url :
526+ - https://invidious.tube/
527+ - https://invidious.snopyta.org/
526 shortcut: iv
528 shortcut: iv
527 timeout : 5.0
529 timeout : 5.0
528 disabled : True
530 disabled : True