summaryrefslogtreecommitdiff
path: root/searx/engines/cachy_os.py
diff options
context:
space:
mode:
authorAustin-Olacsi <138650713+Austin-Olacsi@users.noreply.github.com>2026-01-10 04:45:27 -0700
committerGitHub <noreply@github.com>2026-01-10 12:45:27 +0100
commit26e275222b0f831930aef0a6b38e32e56ad78c36 (patch)
treea5e417ea55d524e368606a9c5fb0c98b70ea5701 /searx/engines/cachy_os.py
parentae48f50245b294cd4c7f585957446a1018cbff95 (diff)
[feat] engines: add CachyOS Packages Search
Diffstat (limited to 'searx/engines/cachy_os.py')
-rw-r--r--searx/engines/cachy_os.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/searx/engines/cachy_os.py b/searx/engines/cachy_os.py
new file mode 100644
index 000000000..e21a34c57
--- /dev/null
+++ b/searx/engines/cachy_os.py
@@ -0,0 +1,59 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""CachyOS (packages, it)"""
+
+from urllib.parse import urlencode
+from datetime import datetime
+from searx.result_types import EngineResults
+
+about = {
+ "website": 'https://cachyos.org',
+ "wikidata_id": "Q116777127",
+ "official_api_documentation": None,
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": "JSON",
+}
+
+base_url = "https://packages.cachyos.org/api/search"
+categories = ['packages', 'it']
+paging = True
+results_per_page = 15
+
+
+def request(query, params):
+ query_params = {
+ "search": query,
+ "page_size": results_per_page,
+ "current_page": params["pageno"],
+ }
+
+ params["url"] = f"{base_url}?{urlencode(query_params)}"
+
+ return params
+
+
+def response(resp) -> EngineResults:
+ results = EngineResults()
+ search_res = resp.json()
+
+ for item in search_res["packages"]:
+ package_name = item["pkg_name"]
+ arch = item["pkg_arch"]
+ repo = item["repo_name"]
+
+ results.add(
+ results.types.LegacyResult(
+ {
+ "template": 'packages.html',
+ "url": f"https://packages.cachyos.org/package/{repo}/{arch}/{package_name}",
+ "title": f"{package_name} ({repo})",
+ "package_name": package_name,
+ "publishedDate": datetime.fromtimestamp(item["pkg_builddate"]),
+ "version": item["pkg_version"],
+ "content": item["pkg_desc"],
+ "tags": [arch],
+ }
+ )
+ )
+
+ return results