summaryrefslogtreecommitdiff
path: root/searx/engines/json_engine.py
diff options
context:
space:
mode:
Diffstat (limited to 'searx/engines/json_engine.py')
-rw-r--r--searx/engines/json_engine.py30
1 files changed, 24 insertions, 6 deletions
diff --git a/searx/engines/json_engine.py b/searx/engines/json_engine.py
index 67d6a5a65..785b0c490 100644
--- a/searx/engines/json_engine.py
+++ b/searx/engines/json_engine.py
@@ -2,6 +2,7 @@ from collections import Iterable
from json import loads
from sys import version_info
from searx.url_utils import urlencode
+from searx.utils import to_string
if version_info[0] == 3:
unicode = str
@@ -98,18 +99,35 @@ def response(resp):
results = []
json = loads(resp.text)
if results_query:
- for result in query(json, results_query)[0]:
- url = query(result, url_query)[0]
- title = query(result, title_query)[0]
- content = query(result, content_query)[0]
- results.append({'url': url, 'title': title, 'content': content})
+ rs = query(json, results_query)
+ if not len(rs):
+ return results
+ for result in rs[0]:
+ try:
+ url = query(result, url_query)[0]
+ title = query(result, title_query)[0]
+ except:
+ continue
+ try:
+ content = query(result, content_query)[0]
+ except:
+ content = ""
+ results.append({
+ 'url': to_string(url),
+ 'title': to_string(title),
+ 'content': to_string(content),
+ })
else:
for url, title, content in zip(
query(json, url_query),
query(json, title_query),
query(json, content_query)
):
- results.append({'url': url, 'title': title, 'content': content})
+ results.append({
+ 'url': to_string(url),
+ 'title': to_string(title),
+ 'content': to_string(content),
+ })
if not suggestion_query:
return results