1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- # SPDX-License-Identifier: AGPL-3.0-or-later
- """Engine for Il Post, a largely independent online Italian newspaper.
- To use this engine add the following entry to your engines
- list in ``settings.yml``:
- .. code:: yaml
- - name: il post
- engine: il_post
- shortcut: pst
- disabled: false
- """
- from urllib.parse import urlencode
- from searx.result_types import EngineResults
- engine_type = "online"
- language_support = False
- categories = ["news"]
- paging = True
- page_size = 10
- time_range_support = True
- time_range_args = {"month": "pub_date:ultimi_30_giorni", "year": "pub_date:ultimo_anno"}
- search_api = "https://api.ilpost.org/search/api/site_search/?"
- about = {
- "website": "https://www.ilpost.it",
- "wikidata_id": "Q3792882",
- "official_api_documentation": None,
- "use_official_api": True,
- "require_api_key": False,
- "results": "JSON",
- "language": "it",
- }
- def request(query, params):
- query_params = {
- "qs": query,
- "pg": params["pageno"],
- "sort": "date_d",
- "filters": "ctype:articoli",
- }
- if params["time_range"]:
- if params["time_range"] not in time_range_args:
- return None
- query_params["filters"] += f";{time_range_args.get(params['time_range'], 'pub_date:da_sempre')}"
- params["url"] = search_api + urlencode(query_params)
- return params
- def response(resp) -> EngineResults:
- res = EngineResults()
- json_data = resp.json()
- for result in json_data["docs"]:
- res.add(
- res.types.MainResult(
- url=result["link"],
- title=result["title"],
- content=result.get("summary", ""),
- thumbnail=result.get("image"),
- )
- )
- return res
|