summaryrefslogtreecommitdiff
path: root/searx/engines/sogou_images.py
diff options
context:
space:
mode:
authorZhijie He <hezhijie0327@hotmail.com>2025-02-23 13:47:03 +0800
committerBnyro <bnyro@tutanota.com>2025-03-02 13:31:31 +0100
commit97aa5a779b3910efb2cc8f7497969fbe0d126910 (patch)
tree2ece13de46369a42d7441ec531ebabaae97ac919 /searx/engines/sogou_images.py
parent71d1504e572074327f851688a4caac90a5e41fe8 (diff)
[feat] add Sogou engine for searxng
Co-authored-by: Bnyro <bnyro@tutanota.com>
Diffstat (limited to 'searx/engines/sogou_images.py')
-rw-r--r--searx/engines/sogou_images.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/searx/engines/sogou_images.py b/searx/engines/sogou_images.py
new file mode 100644
index 000000000..69992e3ba
--- /dev/null
+++ b/searx/engines/sogou_images.py
@@ -0,0 +1,49 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""Sogou-Images: A search engine for retrieving images from Sogou."""
+
+import json
+import re
+from urllib.parse import quote_plus
+
+# about
+about = {
+ "website": "https://pic.sogou.com/",
+ "wikidata_id": "Q7554565",
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": "HTML",
+}
+
+# engine dependent config
+categories = ["images"]
+
+base_url = "https://pic.sogou.com"
+
+
+def request(query, params):
+ params["url"] = f"{base_url}/pics?query={quote_plus(query)}"
+ return params
+
+
+def response(resp):
+ results = []
+ match = re.search(r'window\.__INITIAL_STATE__\s*=\s*({.*?});', resp.text, re.S)
+ if not match:
+ return results
+
+ data = json.loads(match.group(1))
+ if "searchList" in data and "searchList" in data["searchList"]:
+ for item in data["searchList"]["searchList"]:
+ results.append(
+ {
+ "template": "images.html",
+ "url": item.get("url", ""),
+ "thumbnail_src": item.get("picUrl", ""),
+ "img_src": item.get("picUrl", ""),
+ "content": item.get("content_major", ""),
+ "title": item.get("title", ""),
+ "source": item.get("ch_site_name", ""),
+ }
+ )
+
+ return results