mirror of
https://github.com/searxng/searxng.git
synced 2026-06-22 17:48:33 +02:00
[feat] engines: add netherlands startpagina (general, videos, images, news)
This commit is contained in:
@@ -0,0 +1,107 @@
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
"""Startpagina is a Netherlands search engine by `Kompas`_. It takes all its
|
||||
results from Google.
|
||||
|
||||
.. _Kompas: https://www.kompaspublishing.nl/
|
||||
"""
|
||||
|
||||
import typing as t
|
||||
from urllib.parse import urlencode
|
||||
|
||||
from dateutil import parser
|
||||
|
||||
from searx.utils import format_duration
|
||||
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://startpagina.nl",
|
||||
"wikidata_id": None,
|
||||
"official_api_documentation": None,
|
||||
"use_official_api": False,
|
||||
"require_api_key": False,
|
||||
"results": "JSON",
|
||||
}
|
||||
|
||||
language = "ne"
|
||||
paging = True
|
||||
safesearch = True
|
||||
|
||||
categories = ["general"]
|
||||
startpagina_categ = "web"
|
||||
"""Category to search in. Can be either "web", "images", "videos" or "news"."""
|
||||
page_size = 10
|
||||
|
||||
|
||||
api_url = "https://search.kompas.services"
|
||||
|
||||
|
||||
def init(_):
|
||||
if startpagina_categ not in ("web", "images", "videos", "news"):
|
||||
raise ValueError("invalid search type: %s" % startpagina_categ)
|
||||
|
||||
|
||||
def request(query: str, params: "OnlineParams") -> None:
|
||||
args = {"q": query, "page_size": page_size, "page": params["pageno"]}
|
||||
params["url"] = f"{api_url}/api/v2/search/{startpagina_categ}/?{urlencode(args)}"
|
||||
|
||||
|
||||
def response(resp: "SXNG_Response"):
|
||||
res = EngineResults()
|
||||
|
||||
json_resp = resp.json()
|
||||
|
||||
for result in json_resp["results"]:
|
||||
if startpagina_categ == "web":
|
||||
res.add(
|
||||
res.types.MainResult(
|
||||
url=result["original_url"],
|
||||
title=result["title"],
|
||||
content=result["description"],
|
||||
)
|
||||
)
|
||||
elif startpagina_categ == "news":
|
||||
publishedDate = None
|
||||
try:
|
||||
publishedDate = parser.parse(result["date"])
|
||||
except parser.ParserError:
|
||||
pass
|
||||
|
||||
res.add(
|
||||
res.types.MainResult(
|
||||
url=result["original_url"],
|
||||
title=result["title"],
|
||||
content=result["description"],
|
||||
thumbnail=result["image"]["thumbnail_url"],
|
||||
publishedDate=publishedDate,
|
||||
)
|
||||
)
|
||||
elif startpagina_categ == "videos":
|
||||
res.add(
|
||||
res.types.LegacyResult(
|
||||
template="videos.html",
|
||||
url=result["original_url"],
|
||||
title=result["title"],
|
||||
content=result["description"],
|
||||
thumbnail=result["video"]["thumbnail_url"],
|
||||
length=format_duration(result["video"]["duration"]),
|
||||
)
|
||||
)
|
||||
elif startpagina_categ == "images":
|
||||
res.add(
|
||||
res.types.Image(
|
||||
url=result["original_url"],
|
||||
title=result["title"],
|
||||
content=result["description"],
|
||||
thumbnail_src=result["image"]["thumbnail_url"],
|
||||
resolution=f"{result['image']['width']}x{result['image']['height']}",
|
||||
)
|
||||
)
|
||||
|
||||
for related in json_resp["related_searches"]:
|
||||
res.add(res.types.LegacyResult(suggestion=related["query"]))
|
||||
|
||||
return res
|
||||
@@ -3013,6 +3013,38 @@ engines:
|
||||
disabled: true
|
||||
inactive: true
|
||||
|
||||
- name: startpagina
|
||||
engine: startpagina
|
||||
shortcut: spnl
|
||||
startpagina_categ: web
|
||||
categories: general
|
||||
disabled: true
|
||||
inactive: true
|
||||
|
||||
- name: startpagina images
|
||||
engine: startpagina
|
||||
shortcut: spnli
|
||||
startpagina_categ: images
|
||||
categories: images
|
||||
disabled: true
|
||||
inactive: true
|
||||
|
||||
- name: startpagina videos
|
||||
engine: startpagina
|
||||
shortcut: spnlv
|
||||
startpagina_categ: videos
|
||||
categories: videos
|
||||
disabled: true
|
||||
inactive: true
|
||||
|
||||
- name: startpagina news
|
||||
engine: startpagina
|
||||
shortcut: spnln
|
||||
startpagina_categ: news
|
||||
categories: news
|
||||
disabled: true
|
||||
inactive: true
|
||||
|
||||
- name: swisscows
|
||||
engine: swisscows
|
||||
categories: general
|
||||
|
||||
Reference in New Issue
Block a user