summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Flament <alex@al-f.net>2019-04-14 13:55:00 +0200
committerGitHub <noreply@github.com>2019-04-14 13:55:00 +0200
commitdf2b9a76f7a90a3337063b546bed8884d8508f0d (patch)
tree2e0b26cb0a5d9b5efd688c0e75e800e76d9b91ec
parent1c6ab79b9fa79906909d068d51d33ffca1c6dc4f (diff)
parent30cdec37aa222e106f7157c693fc8e5eb0251e38 (diff)
Merge branch 'master' into ne/fix-google-image-search
-rw-r--r--searx/engines/duckduckgo_images.py11
-rw-r--r--tests/unit/engines/test_duckduckgo_images.py2
2 files changed, 8 insertions, 5 deletions
diff --git a/searx/engines/duckduckgo_images.py b/searx/engines/duckduckgo_images.py
index 8c46ec92d..89924b71c 100644
--- a/searx/engines/duckduckgo_images.py
+++ b/searx/engines/duckduckgo_images.py
@@ -35,9 +35,12 @@ site_url = 'https://duckduckgo.com/?{query}&iar=images&iax=1&ia=images'
# run query in site to get vqd number needed for requesting images
# TODO: find a way to get this number without an extra request (is it a hash of the query?)
-def get_vqd(query):
- res = get(site_url.format(query=urlencode({'q': query})))
+def get_vqd(query, headers):
+ query_url = site_url.format(query=urlencode({'q': query}))
+ res = get(query_url, headers=headers)
content = res.text
+ if content.find('vqd=\'') == -1:
+ raise Exception('Request failed')
vqd = content[content.find('vqd=\'') + 5:]
vqd = vqd[:vqd.find('\'')]
return vqd
@@ -47,7 +50,7 @@ def get_vqd(query):
def request(query, params):
# to avoid running actual external requests when testing
if 'is_test' not in params:
- vqd = get_vqd(query)
+ vqd = get_vqd(query, params['headers'])
else:
vqd = '12345'
@@ -74,7 +77,7 @@ def response(resp):
try:
res_json = loads(content)
except:
- return []
+ raise Exception('Cannot parse results')
# parse results
for result in res_json['results']:
diff --git a/tests/unit/engines/test_duckduckgo_images.py b/tests/unit/engines/test_duckduckgo_images.py
index 7a7657cd5..0d152bec1 100644
--- a/tests/unit/engines/test_duckduckgo_images.py
+++ b/tests/unit/engines/test_duckduckgo_images.py
@@ -41,7 +41,7 @@ class TestDuckduckgoImagesEngine(SearxTestCase):
self.assertRaises(AttributeError, duckduckgo_images.response, '[]')
response = mock.Mock(text='If this error persists, please let us know: ops@duckduckgo.com')
- self.assertEqual(duckduckgo_images.response(response), [])
+ self.assertRaises(Exception, duckduckgo_images.response, response)
json = u"""
{