@@ -1,3 +1,14 @@
2+DuckDuckGo (definitions)
4+- `Instant Answer API`_
7+.. _Instant Answer API: https://duckduckgo.com/api
8+.. _DuckDuckGo query: https://api.duckduckgo.com/?q=DuckDuckGo&format=json&pretty=1
1import json
12import json
2from lxml import html
13from lxml import html
3from re import compile
14from re import compile
@@ -25,7 +36,8 @@ def result_to_text(url, text, htmlResult):
25def request(query, params):
36def request(query, params):
26 params['url'] = url.format(query=urlencode({'q': query}))
37 params['url'] = url.format(query=urlencode({'q': query}))
27 language = match_language(params['language'], supported_languages, language_aliases)
38 language = match_language(params['language'], supported_languages, language_aliases)
28− params['headers']['Accept-Language'] = language.split('-')[0]
39+ language = language.split('-')[0]
40+ params['headers']['Accept-Language'] = language
29 return params
41 return params
@@ -43,8 +55,9 @@ def response(resp):
44 # add answer if there is one
56 # add answer if there is one
45 answer = search_res.get('Answer', '')
57 answer = search_res.get('Answer', '')
46− if answer != '':
58+ if answer:
59+ if search_res.get('AnswerType', '') not in ['calc']:
47− results.append({'answer': html_to_text(answer)})
60+ results.append({'answer': html_to_text(answer)})
49 # add infobox
62 # add infobox
50 if 'Definition' in search_res:
63 if 'Definition' in search_res: