mirror of
https://github.com/searxng/searxng.git
synced 2026-07-17 21:41:24 +00:00
[feat] engines: add support for picjumbo.com
This commit is contained in:
63
searx/engines/picjumbo.py
Normal file
63
searx/engines/picjumbo.py
Normal file
@@ -0,0 +1,63 @@
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
"""Picjumbo_ provides free stock photos.
|
||||
|
||||
.. _Picjumbo: https://picjumbo.com
|
||||
"""
|
||||
|
||||
from urllib.parse import urlparse, urlunparse
|
||||
import typing as t
|
||||
|
||||
from lxml import html
|
||||
|
||||
from searx.result_types import EngineResults
|
||||
from searx.utils import eval_xpath, eval_xpath_list, extract_text
|
||||
|
||||
if t.TYPE_CHECKING:
|
||||
from searx.extended_types import SXNG_Response
|
||||
from searx.search.processors import OnlineParams
|
||||
|
||||
|
||||
about = {
|
||||
"website": "https://picjumbo.com",
|
||||
"wikidata_id": None,
|
||||
"official_api_documentation": None,
|
||||
"use_official_api": False,
|
||||
"require_api_key": False,
|
||||
"results": "HTML",
|
||||
}
|
||||
|
||||
base_url = "https://picjumbo.com"
|
||||
|
||||
categories = ["images"]
|
||||
paging = True
|
||||
|
||||
|
||||
def request(query: str, params: "OnlineParams") -> None:
|
||||
params["url"] = f"{base_url}/search/{query}/page/{params['pageno']}"
|
||||
|
||||
|
||||
def _get_max_res_url(url: str) -> str:
|
||||
"""Get the maximum resolution of the image based on the thumbnail URL."""
|
||||
parsed_url = urlparse(url)
|
||||
max_res_url = parsed_url._replace(query="w=10000&quality=100")
|
||||
return urlunparse(max_res_url)
|
||||
|
||||
|
||||
def response(resp: "SXNG_Response"):
|
||||
res = EngineResults()
|
||||
|
||||
doc = html.fromstring(resp.text)
|
||||
|
||||
for result in eval_xpath_list(doc, "//div[contains(@class, 'photo_query')]/div[contains(@class, 'photo_item')]"):
|
||||
thumbnail = extract_text(eval_xpath(result, ".//img[contains(@class, 'image')]/@src")) or ""
|
||||
res.add(
|
||||
res.types.Image(
|
||||
url=extract_text(eval_xpath(result, ".//a[contains(@class, 'image')]/@href")) or "",
|
||||
title=extract_text(eval_xpath(result, ".//h3")) or "",
|
||||
content=extract_text(eval_xpath(result, ".//meta[@itemprop='keywords']/@content")) or "",
|
||||
thumbnail_src=thumbnail,
|
||||
img_src=_get_max_res_url(thumbnail),
|
||||
)
|
||||
)
|
||||
|
||||
return res
|
||||
@@ -1857,6 +1857,11 @@ engines:
|
||||
engine: photon
|
||||
shortcut: ph
|
||||
|
||||
- name: picjumbo
|
||||
engine: picjumbo
|
||||
shortcut: pj
|
||||
disabled: true
|
||||
|
||||
- name: pinterest
|
||||
engine: pinterest
|
||||
shortcut: pin
|
||||
|
||||
Reference in New Issue
Block a user