From c852b9a90a29db386bceb283a8b01e0952876ec6 Mon Sep 17 00:00:00 2001 From: Austin-Olacsi <138650713+Austin-Olacsi@users.noreply.github.com> Date: Sat, 22 Nov 2025 01:59:38 -0700 Subject: [PATCH] [feat] engine: add grokipedia (#5396) --- searx/engines/grokipedia.py | 52 +++++++++++++++++++++++++++++++++++++ searx/settings.yml | 6 +++++ 2 files changed, 58 insertions(+) create mode 100644 searx/engines/grokipedia.py diff --git a/searx/engines/grokipedia.py b/searx/engines/grokipedia.py new file mode 100644 index 000000000..d0ce60902 --- /dev/null +++ b/searx/engines/grokipedia.py @@ -0,0 +1,52 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +"""Grokipedia (general)""" + +from urllib.parse import urlencode +from searx.utils import html_to_text +from searx.result_types import EngineResults + +about = { + "website": 'https://grokipedia.com', + "wikidata_id": "Q136410803", + "official_api_documentation": None, + "use_official_api": False, + "require_api_key": False, + "results": "JSON", +} + +base_url = "https://grokipedia.com/api/full-text-search" +categories = ['general'] +paging = True +results_per_page = 10 + + +def request(query, params): + + start_index = (params["pageno"] - 1) * results_per_page + + query_params = { + "query": query, + "limit": results_per_page, + "offset": start_index, + } + + params["url"] = f"{base_url}?{urlencode(query_params)}" + + return params + + +def response(resp) -> EngineResults: + results = EngineResults() + search_res = resp.json() + + for item in search_res["results"]: + + results.add( + results.types.MainResult( + url='https://grokipedia.com/page/' + item["slug"], + title=item["title"], + content=html_to_text(item["snippet"]), + ) + ) + + return results diff --git a/searx/settings.yml b/searx/settings.yml index 81124bfc8..05b4a003e 100644 --- a/searx/settings.yml +++ b/searx/settings.yml @@ -1058,6 +1058,12 @@ engines: play_categ: movies disabled: true + - name: grokipedia + engine: grokipedia + shortcut: gp + disabled: true + inactive: true + - name: material icons engine: material_icons shortcut: mi