|
|
|
@ -1,3 +1,14 @@
|
|
|
|
|
"""
|
|
|
|
|
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
|
|
|
|
|
from lxml import html
|
|
|
|
|
from re import compile
|
|
|
|
@ -25,7 +36,8 @@ def result_to_text(url, text, htmlResult):
|
|
|
|
|
def request(query, params):
|
|
|
|
|
params['url'] = url.format(query=urlencode({'q': query}))
|
|
|
|
|
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
|
|
|
|
|
return params
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -43,8 +55,9 @@ def response(resp):
|
|
|
|
|
|
|
|
|
|
# add answer if there is one
|
|
|
|
|
answer = search_res.get('Answer', '')
|
|
|
|
|
if answer != '':
|
|
|
|
|
results.append({'answer': html_to_text(answer)})
|
|
|
|
|
if answer:
|
|
|
|
|
if search_res.get('AnswerType', '') not in ['calc']:
|
|
|
|
|
results.append({'answer': html_to_text(answer)})
|
|
|
|
|
|
|
|
|
|
# add infobox
|
|
|
|
|
if 'Definition' in search_res:
|
|
|
|
|