on master help sign in
[mod] replace old stackoverflow engine by Stack Exchange API v2.3

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>

commit5e84d670a2a8c2f07fce8199717485bcc0d4587a authorMarkus Heiser <markus.heiser@darmarit.de> dateTue 28 Sep 2021, 19:02 (5 years ago) parent2cf9a61
2 files changed+5−67
searx/engines/stackoverflow.py−64 searx/settings.yml+5−3
searx/engines/stackoverflow.pydeleted−64
@@ -1,64 +0,0 @@
1−# SPDX-License-Identifier: AGPL-3.0-or-later
2−"""
3− Stackoverflow (IT)
4−"""
5−
6−from urllib.parse import urlencode, urljoin
7−from lxml import html
8−from searx.utils import extract_text
9−from searx.exceptions import SearxEngineCaptchaException
10−
11−# about
12−about = {
13− "website": 'https://stackoverflow.com/',
14− "wikidata_id": 'Q549037',
15− "official_api_documentation": 'https://api.stackexchange.com/docs',
16− "use_official_api": False,
17− "require_api_key": False,
18− "results": 'HTML',
19−}
20−
21−# engine dependent config
22−categories = ['it']
23−paging = True
24−
25−# search-url
26−url = 'https://stackoverflow.com/'
27−search_url = url + 'search?{query}&page={pageno}'
28−
29−# specific xpath variables
30−results_xpath = '//div[contains(@class,"question-summary")]'
31−link_xpath = './/div[@class="result-link"]//a|.//div[@class="summary"]//h3//a'
32−content_xpath = './/div[@class="excerpt"]'
33−
34−
35−# do search-request
36−def request(query, params):
37− params['url'] = search_url.format(query=urlencode({'q': query}), pageno=params['pageno'])
38−
39− return params
40−
41−
42−# get response from search-request
43−def response(resp):
44− if resp.url.path.startswith('/nocaptcha'):
45− raise SearxEngineCaptchaException()
46−
47− results = []
48−
49− dom = html.fromstring(resp.text)
50−
51− # parse results
52− for result in dom.xpath(results_xpath):
53− link = result.xpath(link_xpath)[0]
54− href = urljoin(url, link.attrib.get('href'))
55− title = extract_text(link)
56− content = extract_text(result.xpath(content_xpath))
57−
58− # append result
59− results.append({'url': href,
60− 'title': title,
61− 'content': content})
62−
63− # return results
64− return results
searx/settings.yml+5−3
@@ -1047,9 +1047,11 @@ engines:
10471047 engine : soundcloud
10481048 shortcut : sc
10491049
1050− - name : stackoverflow
1051− engine : stackoverflow
1052− shortcut : st
1050+ - name: stackoverflow
1051+ engine: stackexchange
1052+ shortcut: st
1053+ api_site: 'stackoverflow'
1054+ categories: it
10531055
10541056 - name : searchcode code
10551057 engine : searchcode_code