on master help sign in
Add Freesound engine (#2596)

Add freesound engine with player. Co-authored-by: Gazoil <maildeguzel@gmail.com>

commit5f6ac3afa2c8f2030fb72612a566d3d639896dab authorGazoilKerozen <72867517+GazoilKerozen@users.noreply.github.com> dateMon 1 Mar 2021, 08:52 (6 years ago) parentb05f4d0
2 files changed+77
searx/engines/freesound.py+69 searx/settings.yml+8
searx/engines/freesound.pynew file+69
@@ -0,0 +1,69 @@
1+# SPDX-License-Identifier: AGPL-3.0-or-later
2+"""
3+Freesound (Sound)
4+"""
5+
6+from json import loads
7+from urllib.parse import urlencode
8+from datetime import datetime
9+
10+disabled = True
11+api_key = ""
12+
13+# about
14+about = {
15+ "website": "https://freesound.org",
16+ "wikidata_id": "Q835703",
17+ "official_api_documentation": "https://freesound.org/docs/api",
18+ "use_official_api": True,
19+ "require_api_key": True,
20+ "results": "JSON",
21+}
22+
23+# engine dependent config
24+paging = True
25+
26+# search url
27+url = "https://freesound.org/apiv2/"
28+search_url = (
29+ url
30+ + "search/text/?query={query}&page={page}&fields=name,url,download,created,description,type&token={api_key}"
31+)
32+
33+embedded_url = '<audio controls><source src="{uri}" type="audio/{ftype}"></audio>'
34+
35+
36+# search request
37+def request(query, params):
38+ params["url"] = search_url.format(
39+ query=urlencode({"q": query}),
40+ page=params["pageno"],
41+ api_key=api_key,
42+ )
43+ return params
44+
45+
46+# get response from search request
47+def response(resp):
48+ results = []
49+ search_res = loads(resp.text)
50+ # parse results
51+ for result in search_res.get("results", []):
52+ title = result["name"]
53+ content = result["description"][:128]
54+ publishedDate = datetime.fromisoformat(result["created"])
55+ uri = result["download"]
56+ embedded = embedded_url.format(uri=uri, ftype=result["type"])
57+
58+ # append result
59+ results.append(
60+ {
61+ "url": result["url"],
62+ "title": title,
63+ "publishedDate": publishedDate,
64+ "embedded": embedded,
65+ "content": content,
66+ }
67+ )
68+
69+ return results
searx/settings.yml+8
@@ -431,6 +431,14 @@ engines:
431431 website: https://directory.fsf.org/
432432 wikidata_id: Q2470288
433433
434+ # - name : freesound
435+ # engine : freesound
436+ # shortcut : fnd
437+ # disabled : True
438+ # timeout : 15.0
439+ # api_key : MyAPIkey
440+ # API key required, see : https://freesound.org/docs/api/overview.html
441+
434442 - name : frinkiac
435443 engine : frinkiac
436444 shortcut : frk