12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- # 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 urlencode
- # 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"]
- paging = True
- base_url = "https://pic.sogou.com"
- def request(query, params):
- query_params = {
- "query": query,
- "start": (params["pageno"] - 1) * 48,
- }
- params["url"] = f"{base_url}/pics?{urlencode(query_params)}"
- 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
|