diff options
| -rw-r--r-- | searx/data/useragents.json | 7 | ||||
| -rw-r--r-- | searx/engines/__init__.py | 8 | ||||
| -rw-r--r-- | searx/engines/freesound.py | 69 | ||||
| -rw-r--r-- | searx/engines/wikipedia.py | 2 | ||||
| -rw-r--r-- | searx/settings.yml | 8 | ||||
| -rw-r--r-- | utils/fetch_languages.py | 3 |
6 files changed, 89 insertions, 8 deletions
diff --git a/searx/data/useragents.json b/searx/data/useragents.json index b296f823b..6e77cbd40 100644 --- a/searx/data/useragents.json +++ b/searx/data/useragents.json @@ -1,8 +1,9 @@ { "versions": [ - "84.0.1", - "84.0", - "83.0" + "86.0", + "85.0.2", + "85.0.1", + "85.0" ], "os": [ "Windows NT 10.0; WOW64", diff --git a/searx/engines/__init__.py b/searx/engines/__init__.py index 80d5d18fc..9ece10964 100644 --- a/searx/engines/__init__.py +++ b/searx/engines/__init__.py @@ -27,7 +27,7 @@ from searx import settings from searx import logger from searx.data import ENGINES_LANGUAGES from searx.poolrequests import get, get_proxy_cycles -from searx.utils import load_module, match_language, get_engine_from_settings +from searx.utils import load_module, match_language, get_engine_from_settings, gen_useragent logger = logger.getChild('engines') @@ -131,8 +131,12 @@ def load_engine(engine_data): # assign language fetching method if auxiliary method exists if hasattr(engine, '_fetch_supported_languages'): + headers = { + 'User-Agent': gen_useragent(), + 'Accept-Language': 'ja-JP,ja;q=0.8,en-US;q=0.5,en;q=0.3', # bing needs a non-English language + } setattr(engine, 'fetch_supported_languages', - lambda: engine._fetch_supported_languages(get(engine.supported_languages_url))) + lambda: engine._fetch_supported_languages(get(engine.supported_languages_url, headers=headers))) engine.stats = { 'sent_search_count': 0, # sent search diff --git a/searx/engines/freesound.py b/searx/engines/freesound.py new file mode 100644 index 000000000..d2564946c --- /dev/null +++ b/searx/engines/freesound.py @@ -0,0 +1,69 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +""" +Freesound (Sound) +""" + +from json import loads +from urllib.parse import urlencode +from datetime import datetime + +disabled = True +api_key = "" + +# about +about = { + "website": "https://freesound.org", + "wikidata_id": "Q835703", + "official_api_documentation": "https://freesound.org/docs/api", + "use_official_api": True, + "require_api_key": True, + "results": "JSON", +} + +# engine dependent config +paging = True + +# search url +url = "https://freesound.org/apiv2/" +search_url = ( + url + + "search/text/?query={query}&page={page}&fields=name,url,download,created,description,type&token={api_key}" +) + +embedded_url = '<audio controls><source src="{uri}" type="audio/{ftype}"></audio>' + + +# search request +def request(query, params): + params["url"] = search_url.format( + query=urlencode({"q": query}), + page=params["pageno"], + api_key=api_key, + ) + return params + + +# get response from search request +def response(resp): + results = [] + search_res = loads(resp.text) + # parse results + for result in search_res.get("results", []): + title = result["name"] + content = result["description"][:128] + publishedDate = datetime.fromisoformat(result["created"]) + uri = result["download"] + embedded = embedded_url.format(uri=uri, ftype=result["type"]) + + # append result + results.append( + { + "url": result["url"], + "title": title, + "publishedDate": publishedDate, + "embedded": embedded, + "content": content, + } + ) + + return results diff --git a/searx/engines/wikipedia.py b/searx/engines/wikipedia.py index 2adfefa69..da867c81e 100644 --- a/searx/engines/wikipedia.py +++ b/searx/engines/wikipedia.py @@ -106,6 +106,6 @@ def _fetch_supported_languages(resp): articles = int(td[4].xpath('./a/b')[0].text.replace(',', '')) # exclude languages with too few articles if articles >= 100: - supported_languages[code] = {"name": name, "english_name": english_name, "articles": articles} + supported_languages[code] = {"name": name, "english_name": english_name} return supported_languages diff --git a/searx/settings.yml b/searx/settings.yml index 88ea27c75..581f19348 100644 --- a/searx/settings.yml +++ b/searx/settings.yml @@ -431,6 +431,14 @@ engines: website: https://directory.fsf.org/ wikidata_id: Q2470288 + # - name : freesound + # engine : freesound + # shortcut : fnd + # disabled : True + # timeout : 15.0 + # api_key : MyAPIkey + # API key required, see : https://freesound.org/docs/api/overview.html + - name : frinkiac engine : frinkiac shortcut : frk diff --git a/utils/fetch_languages.py b/utils/fetch_languages.py index 453693136..582e0ae00 100644 --- a/utils/fetch_languages.py +++ b/utils/fetch_languages.py @@ -2,8 +2,7 @@ # This script generates languages.py from intersecting each engine's supported languages. # -# Output files (engines_languages.json and languages.py) -# are written in current directory to avoid overwriting in case something goes wrong. +# Output files: searx/data/engines_languages.json and searx/languages.py import json from pathlib import Path |