From 13a5ace8b54d8300eaf1f276ddb325270b389110 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Tue, 16 Jun 2026 21:30:06 +0200 Subject: [PATCH] [feat] engines: add stocksnap images engine --- searx/engines/stocksnap.py | 55 ++++++++++++++++++++++++++++++++++++++ searx/settings.yml | 5 ++++ 2 files changed, 60 insertions(+) create mode 100644 searx/engines/stocksnap.py diff --git a/searx/engines/stocksnap.py b/searx/engines/stocksnap.py new file mode 100644 index 000000000..3c532d0bb --- /dev/null +++ b/searx/engines/stocksnap.py @@ -0,0 +1,55 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +"""Stocksnap_ is a search engine for CC0-licensed images. + +.. _Stocksnap: https://stocksnap.io +""" + +import typing as t + +from searx.result_types import EngineResults + +if t.TYPE_CHECKING: + from searx.extended_types import SXNG_Response + from searx.search.processors import OnlineParams + + +about = { + "website": "https://stocksnap.io", + "wikidata_id": None, + "official_api_documentation": None, + "use_official_api": False, + "require_api_key": False, + "results": "JSON", +} +# otherwise all requests get blocked, probably HTTP2 fingerprinting +enable_http2 = False + +base_url = "https://stocksnap.io" +cdn_url = "https://cdn.stocksnap.io" + +categories = ["images"] +paging = True + + +def request(query: str, params: "OnlineParams") -> None: + params["url"] = f"{base_url}/api/search-photos/{query}/relevance/desc/{params['pageno']}" + + +def response(resp: "SXNG_Response"): + res = EngineResults() + + result: dict[str, str] # TBH: dict[str, t.Any] + for result in resp.json()["results"]: + slug = "-".join(result['keywords'][:1]) + "-" + result["img_id"] + res.add( + res.types.Image( + title=result["tags"], + url=f"{base_url}/photo/{slug}", + thumbnail_src=f"{cdn_url}/img-thumbs/280h/{result['img_id']}.jpg", + img_src=f"{cdn_url}/img-thumbs/960w/{result['img_id']}.jpg", + img_format="JPEG", + resolution=f"{result['img_width']}x{result['img_height']}", + ) + ) + + return res diff --git a/searx/settings.yml b/searx/settings.yml index 7bad29689..4160ae2ce 100644 --- a/searx/settings.yml +++ b/searx/settings.yml @@ -2200,6 +2200,11 @@ engines: api_site: 'stackoverflow' categories: [it, q&a] + - name: stocksnap + engine: stocksnap + shortcut: sto + disabled: true + - name: askubuntu engine: stackexchange shortcut: ubuntu