From 6dca14e95d08479fb49314cb4093be36ac49cf94 Mon Sep 17 00:00:00 2001 From: a01200356 Date: Sun, 17 Apr 2016 16:21:44 -0500 Subject: [PATCH] [enh] multilingual duckduckgo_definitions --- searx/engines/duckduckgo_definitions.py | 7 ++++++- searx/templates/oscar/infobox.html | 6 +++--- tests/unit/engines/test_duckduckgo_definitions.py | 4 ++-- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/searx/engines/duckduckgo_definitions.py b/searx/engines/duckduckgo_definitions.py index 793e97d2..dc25d416 100644 --- a/searx/engines/duckduckgo_definitions.py +++ b/searx/engines/duckduckgo_definitions.py @@ -1,5 +1,6 @@ import json from urllib import urlencode +from re import sub from lxml import html from searx.utils import html_to_text from searx.engines.xpath import extract_text @@ -19,8 +20,8 @@ def result_to_text(url, text, htmlResult): def request(query, params): - # TODO add kl={locale} params['url'] = url.format(query=urlencode({'q': query})) + params['headers']['Accept-Language'] = params['language'] return params @@ -103,6 +104,10 @@ def response(resp): urls.append({'title': search_res.get('DefinitionSource'), 'url': definitionURL}) + # to merge with wikidata's infobox + if infobox_id: + infobox_id = sub(r'^http:', r'https:', infobox_id) + # entity entity = search_res.get('Entity', None) # TODO continent / country / department / location / waterfall / diff --git a/searx/templates/oscar/infobox.html b/searx/templates/oscar/infobox.html index 606a5d22..c72cfb63 100644 --- a/searx/templates/oscar/infobox.html +++ b/searx/templates/oscar/infobox.html @@ -1,9 +1,9 @@
-

{{ infobox.infobox }}

+

{{ infobox.infobox }}

- + {% if infobox.img_src %}{{ infobox.infobox }}{% endif %} {% if infobox.content %}

{{ infobox.content }}

{% endif %} @@ -29,6 +29,6 @@ {% endfor %}
{% endif %} - +
diff --git a/tests/unit/engines/test_duckduckgo_definitions.py b/tests/unit/engines/test_duckduckgo_definitions.py index 71c84235..39da6417 100644 --- a/tests/unit/engines/test_duckduckgo_definitions.py +++ b/tests/unit/engines/test_duckduckgo_definitions.py @@ -123,7 +123,7 @@ class TestDDGDefinitionsEngine(SearxTestCase): self.assertEqual(results[1]['url'], 'result first url') self.assertEqual(results[2]['suggestion'], 'text') self.assertEqual(results[3]['infobox'], 'heading') - self.assertEqual(results[3]['id'], 'http://definition.url') + self.assertEqual(results[3]['id'], 'https://definition.url') self.assertEqual(results[3]['entity'], 'Entity') self.assertIn('abstract', results[3]['content']) self.assertIn('this is the definition', results[3]['content']) @@ -240,7 +240,7 @@ class TestDDGDefinitionsEngine(SearxTestCase): self.assertEqual(type(results), list) self.assertEqual(len(results), 1) self.assertEqual(results[0]['infobox'], 'heading') - self.assertEqual(results[0]['id'], 'http://definition.url') + self.assertEqual(results[0]['id'], 'https://definition.url') self.assertEqual(results[0]['entity'], 'Entity') self.assertIn('abstract', results[0]['content']) self.assertIn('this is the definition', results[0]['content'])