forked from zaclys/searxng
[fix] duckduckgo_definitions - where 'AnswerType' is 'calc'
Do not try to get text when 'AnswerType' is 'calc'. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
This commit is contained in:
parent
8721be2f7d
commit
4998e9ec85
|
@ -1,11 +1,25 @@
|
||||||
|
"""
|
||||||
|
DuckDuckGo (definitions)
|
||||||
|
|
||||||
|
- `Instant Answer API`_
|
||||||
|
- `DuckDuckGo query`_
|
||||||
|
|
||||||
|
.. _Instant Answer API: https://duckduckgo.com/api
|
||||||
|
.. _DuckDuckGo query: https://api.duckduckgo.com/?q=DuckDuckGo&format=json&pretty=1
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
import json
|
import json
|
||||||
from lxml import html
|
from lxml import html
|
||||||
from re import compile
|
from re import compile
|
||||||
|
import logging
|
||||||
from searx.engines.xpath import extract_text
|
from searx.engines.xpath import extract_text
|
||||||
from searx.engines.duckduckgo import _fetch_supported_languages, supported_languages_url, language_aliases
|
from searx.engines.duckduckgo import _fetch_supported_languages, supported_languages_url, language_aliases
|
||||||
from searx.url_utils import urlencode
|
from searx.url_utils import urlencode
|
||||||
from searx.utils import html_to_text, match_language
|
from searx.utils import html_to_text, match_language
|
||||||
|
|
||||||
|
logger = logging.getLogger('searx.engines.'+ __name__)
|
||||||
|
|
||||||
url = 'https://api.duckduckgo.com/'\
|
url = 'https://api.duckduckgo.com/'\
|
||||||
+ '?{query}&format=json&pretty=0&no_redirect=1&d=1'
|
+ '?{query}&format=json&pretty=0&no_redirect=1&d=1'
|
||||||
|
|
||||||
|
@ -25,7 +39,9 @@ def result_to_text(url, text, htmlResult):
|
||||||
def request(query, params):
|
def request(query, params):
|
||||||
params['url'] = url.format(query=urlencode({'q': query}))
|
params['url'] = url.format(query=urlencode({'q': query}))
|
||||||
language = match_language(params['language'], supported_languages, language_aliases)
|
language = match_language(params['language'], supported_languages, language_aliases)
|
||||||
params['headers']['Accept-Language'] = language.split('-')[0]
|
language = language.split('-')[0]
|
||||||
|
params['headers']['Accept-Language'] = language
|
||||||
|
logger.debug("query %s: // headers: %s", params['url'], params['headers'])
|
||||||
return params
|
return params
|
||||||
|
|
||||||
|
|
||||||
|
@ -43,8 +59,9 @@ def response(resp):
|
||||||
|
|
||||||
# add answer if there is one
|
# add answer if there is one
|
||||||
answer = search_res.get('Answer', '')
|
answer = search_res.get('Answer', '')
|
||||||
if answer != '':
|
if answer:
|
||||||
results.append({'answer': html_to_text(answer)})
|
if search_res.get('AnswerType', '') not in ['calc']:
|
||||||
|
results.append({'answer': html_to_text(answer)})
|
||||||
|
|
||||||
# add infobox
|
# add infobox
|
||||||
if 'Definition' in search_res:
|
if 'Definition' in search_res:
|
||||||
|
|
Loading…
Reference in New Issue