From b1431e1670771481961a9e7cf6816d30f6afcfaa Mon Sep 17 00:00:00 2001 From: Yaksh Bariya Date: Tue, 27 Feb 2024 17:47:20 +0530 Subject: [PATCH] [feat] engine: implementation of cppreference --- searx/engines/cppreference.py | 39 +++++++++++++++++++++++++++++++++++ searx/settings.yml | 6 ++++++ 2 files changed, 45 insertions(+) create mode 100644 searx/engines/cppreference.py diff --git a/searx/engines/cppreference.py b/searx/engines/cppreference.py new file mode 100644 index 000000000..b13cf730b --- /dev/null +++ b/searx/engines/cppreference.py @@ -0,0 +1,39 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +# lint: pylint +"""Cppreference +""" +from lxml import html +from searx.utils import eval_xpath + + +about = { + "website": "https://en.cppreference.com/", + "wikidata_id": None, + "official_api_documentation": None, + "use_official_api": False, + "require_api_key": False, + "results": 'HTML', +} + + +categories = ['it'] +url = 'https://en.cppreference.com/' +search_url = url + 'mwiki/index.php?title=Special%3ASearch&search={query}' + + +def request(query, params): + params['url'] = search_url.format(query=query) + return query + + +def response(resp): + results = [] + dom = html.fromstring(resp.text) + for result in eval_xpath(dom, '//div[contains(@class, "mw-search-result-heading")]'): + results.append( + { + 'url': url + eval_xpath(result, './/a/@href')[0], + 'title': eval_xpath(result, './/a/text()')[0], + } + ) + return results diff --git a/searx/settings.yml b/searx/settings.yml index 72cf4e7ac..27fdebca1 100644 --- a/searx/settings.yml +++ b/searx/settings.yml @@ -477,6 +477,12 @@ engines: # # get your API key from: https://core.ac.uk/api-keys/register/ # api_key: 'unset' + - name: cppreference + engine: cppreference + shortcut: cpp + paging: false + disabled: true + - name: crossref engine: crossref shortcut: cr