diff options
author | Markus Heiser <markus.heiser@darmarit.de> | 2022-02-04 15:16:23 +0100 |
---|---|---|
committer | Markus Heiser <markus.heiser@darmarit.de> | 2022-02-04 15:42:06 +0100 |
commit | e2ec6b4211322d5780c13f2f860b0b7bc912cd3e (patch) | |
tree | 2ad9e77d2abc6a50e6fecafe7d7b770b07911007 /searx/engines | |
parent | ae804ddf4016b140cc4ca879388594370334ffca (diff) | |
download | searxng-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.py | 20 |
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) |