summaryrefslogtreecommitdiff
path: root/searx/engines
diff options
context:
space:
mode:
authorMarkus Heiser <markus.heiser@darmarit.de>2022-02-04 15:16:23 +0100
committerMarkus Heiser <markus.heiser@darmarit.de>2022-02-04 15:42:06 +0100
commite2ec6b4211322d5780c13f2f860b0b7bc912cd3e (patch)
tree2ad9e77d2abc6a50e6fecafe7d7b770b07911007 /searx/engines
parentae804ddf4016b140cc4ca879388594370334ffca (diff)
downloadsearxng-e2ec6b4211322d5780c13f2f860b0b7bc912cd3e.tar.gz
searxng-e2ec6b4211322d5780c13f2f860b0b7bc912cd3e.zip
[fix] invidious engine: store random base_url in param
Two different threads ( = two different user queries) can call the request function in a row and then the response function. The namespace will be same since this is the same engine. To keep exactly the same value ``base_url`` must be stored in params and then retrieve using ``resp.search_params["base_url"]``. Suggested-by: @dalf https://github.com/searxng/searxng/pull/862#discussion_r799324861 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
Diffstat (limited to 'searx/engines')
-rw-r--r--searx/engines/invidious.py20
1 files changed, 8 insertions, 12 deletions
diff --git a/searx/engines/invidious.py b/searx/engines/invidious.py
index 914615d6f..931fd1066 100644
--- a/searx/engines/invidious.py
+++ b/searx/engines/invidious.py
@@ -23,16 +23,12 @@ categories = ["videos", "music"]
paging = True
time_range_support = True
-
-# search-url
-
-base_url = ''
-base_url_rand = ''
+# base_url can be overwritten by a list of URLs in the settings.yml
+base_url = 'https://vid.puffyan.us'
# do search-request
def request(query, params):
- global base_url_rand
time_range_dict = {
"day": "today",
"week": "week",
@@ -41,11 +37,11 @@ def request(query, params):
}
if isinstance(base_url, list):
- base_url_rand = random.choice(base_url)
+ params["base_url"] = random.choice(base_url)
else:
- base_url_rand = base_url
+ params["base_url"] = base_url
- search_url = base_url_rand + "api/v1/search?q={query}"
+ search_url = params["base_url"] + "/api/v1/search?q={query}"
params["url"] = search_url.format(query=quote_plus(query)) + "&page={pageno}".format(pageno=params["pageno"])
if params["time_range"] in time_range_dict:
@@ -67,12 +63,12 @@ def response(resp):
embedded_url = (
'<iframe width="540" height="304" '
+ 'data-src="'
- + base_url_rand
- + 'embed/{videoid}" '
+ + resp.search_params['base_url']
+ + '/embed/{videoid}" '
+ 'frameborder="0" allowfullscreen></iframe>'
)
- base_invidious_url = base_url_rand + "watch?v="
+ base_invidious_url = resp.search_params['base_url'] + "/watch?v="
for result in search_results:
rtype = result.get("type", None)