diff options
author | dalf <alex@al-f.net> | 2014-12-07 16:36:20 +0100 |
---|---|---|
committer | dalf <alex@al-f.net> | 2014-12-07 16:36:20 +0100 |
commit | ffcec383b7355c6ca8b60da8579a43019d7d7e6b (patch) | |
tree | 3a944cf1755010f8c768b643a47033d8ff9bb752 /searx/engines/duckduckgo_definitions.py | |
parent | 611f4e2a86a84b3d15bdaf6ef7435549ea86fcfa (diff) | |
download | searxng-ffcec383b7355c6ca8b60da8579a43019d7d7e6b.tar.gz searxng-ffcec383b7355c6ca8b60da8579a43019d7d7e6b.zip |
[fix] pep8 : duckduckgo_definitions and wikidata engines
Diffstat (limited to 'searx/engines/duckduckgo_definitions.py')
-rw-r--r-- | searx/engines/duckduckgo_definitions.py | 77 |
1 files changed, 46 insertions, 31 deletions
diff --git a/searx/engines/duckduckgo_definitions.py b/searx/engines/duckduckgo_definitions.py index c008f22f7..8f81d2c8e 100644 --- a/searx/engines/duckduckgo_definitions.py +++ b/searx/engines/duckduckgo_definitions.py @@ -3,21 +3,25 @@ from urllib import urlencode from lxml import html from searx.engines.xpath import extract_text -url = 'https://api.duckduckgo.com/?{query}&format=json&pretty=0&no_redirect=1&d=1' +url = 'https://api.duckduckgo.com/'\ + + '?{query}&format=json&pretty=0&no_redirect=1&d=1' + def result_to_text(url, text, htmlResult): # TODO : remove result ending with "Meaning" or "Category" dom = html.fromstring(htmlResult) a = dom.xpath('//a') - if len(a)>=1: + if len(a) >= 1: return extract_text(a[0]) else: return text + def html_to_text(htmlFragment): dom = html.fromstring(htmlFragment) return extract_text(dom) + def request(query, params): # TODO add kl={locale} params['url'] = url.format(query=urlencode({'q': query})) @@ -38,16 +42,15 @@ def response(resp): # add answer if there is one answer = search_res.get('Answer', '') if answer != '': - results.append({ 'answer' : html_to_text(answer) }) + results.append({'answer': html_to_text(answer)}) # add infobox if 'Definition' in search_res: - content = content + search_res.get('Definition', '') + content = content + search_res.get('Definition', '') if 'Abstract' in search_res: content = content + search_res.get('Abstract', '') - # image image = search_res.get('Image', '') image = None if image == '' else image @@ -55,29 +58,35 @@ def response(resp): # attributes if 'Infobox' in search_res: infobox = search_res.get('Infobox', None) - if 'content' in infobox: + if 'content' in infobox: for info in infobox.get('content'): - attributes.append({'label': info.get('label'), 'value': info.get('value')}) + attributes.append({'label': info.get('label'), + 'value': info.get('value')}) # urls for ddg_result in search_res.get('Results', []): if 'FirstURL' in ddg_result: firstURL = ddg_result.get('FirstURL', '') text = ddg_result.get('Text', '') - urls.append({'title':text, 'url':firstURL}) - results.append({'title':heading, 'url': firstURL}) + urls.append({'title': text, 'url': firstURL}) + results.append({'title': heading, 'url': firstURL}) # related topics for ddg_result in search_res.get('RelatedTopics', None): if 'FirstURL' in ddg_result: - suggestion = result_to_text(ddg_result.get('FirstURL', None), ddg_result.get('Text', None), ddg_result.get('Result', None)) + suggestion = result_to_text(ddg_result.get('FirstURL', None), + ddg_result.get('Text', None), + ddg_result.get('Result', None)) if suggestion != heading: results.append({'suggestion': suggestion}) elif 'Topics' in ddg_result: suggestions = [] - relatedTopics.append({ 'name' : ddg_result.get('Name', ''), 'suggestions': suggestions }) + relatedTopics.append({'name': ddg_result.get('Name', ''), + 'suggestions': suggestions}) for topic_result in ddg_result.get('Topics', []): - suggestion = result_to_text(topic_result.get('FirstURL', None), topic_result.get('Text', None), topic_result.get('Result', None)) + suggestion = result_to_text(topic_result.get('FirstURL', None), + topic_result.get('Text', None), + topic_result.get('Result', None)) if suggestion != heading: suggestions.append(suggestion) @@ -86,21 +95,26 @@ def response(resp): if abstractURL != '': # add as result ? problem always in english infobox_id = abstractURL - urls.append({'title': search_res.get('AbstractSource'), 'url': abstractURL}) + urls.append({'title': search_res.get('AbstractSource'), + 'url': abstractURL}) # definition definitionURL = search_res.get('DefinitionURL', '') if definitionURL != '': # add as result ? as answer ? problem always in english infobox_id = definitionURL - urls.append({'title': search_res.get('DefinitionSource'), 'url': definitionURL}) + urls.append({'title': search_res.get('DefinitionSource'), + 'url': definitionURL}) # entity entity = search_res.get('Entity', None) - # TODO continent / country / department / location / waterfall / mountain range : link to map search, get weather, near by locations + # TODO continent / country / department / location / waterfall / + # mountain range : + # link to map search, get weather, near by locations # TODO musician : link to music search # TODO concert tour : ?? - # TODO film / actor / television / media franchise : links to IMDB / rottentomatoes (or scrap result) + # TODO film / actor / television / media franchise : + # links to IMDB / rottentomatoes (or scrap result) # TODO music : link tu musicbrainz / last.fm # TODO book : ?? # TODO artist / playwright : ?? @@ -114,24 +128,25 @@ def response(resp): # TODO programming language : ?? # TODO file format : ?? - if len(heading)>0: + if len(heading) > 0: # TODO get infobox.meta.value where .label='article_title' - if image==None and len(attributes)==0 and len(urls)==1 and len(relatedTopics)==0 and len(content)==0: + if image is None and len(attributes) == 0 and len(urls) == 1 and\ + len(relatedTopics) == 0 and len(content) == 0: results.append({ - 'url': urls[0]['url'], - 'title': heading, - 'content': content - }) + 'url': urls[0]['url'], + 'title': heading, + 'content': content + }) else: results.append({ - 'infobox': heading, - 'id': infobox_id, - 'entity': entity, - 'content': content, - 'img_src' : image, - 'attributes': attributes, - 'urls': urls, - 'relatedTopics': relatedTopics - }) + 'infobox': heading, + 'id': infobox_id, + 'entity': entity, + 'content': content, + 'img_src': image, + 'attributes': attributes, + 'urls': urls, + 'relatedTopics': relatedTopics + }) return results |