diff --git a/searx/engines/freesound.py b/searx/engines/freesound.py new file mode 100644 index 00000000..d2564946 --- /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 = '' + + +# 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/settings.yml b/searx/settings.yml index 88ea27c7..581f1934 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