diff options
Diffstat (limited to 'searx/engines/invidious.py')
| -rw-r--r-- | searx/engines/invidious.py | 42 |
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) |