summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--searx/engines/json_engine.py13
-rw-r--r--searx/utils.py12
2 files changed, 23 insertions, 2 deletions
diff --git a/searx/engines/json_engine.py b/searx/engines/json_engine.py
index eeae5c235..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
@@ -111,14 +112,22 @@ def response(resp):
content = query(result, content_query)[0]
except:
content = ""
- results.append({'url': url, 'title': title, 'content': 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
diff --git a/searx/utils.py b/searx/utils.py
index 9494bdf3d..8f095f3b0 100644
--- a/searx/utils.py
+++ b/searx/utils.py
@@ -7,6 +7,7 @@ import re
from babel.dates import format_date
from codecs import getincrementalencoder
from imp import load_source
+from numbers import Number
from os.path import splitext, join
from random import choice
import sys
@@ -336,3 +337,14 @@ def new_hmac(secret_key, url):
return hmac.new(bytes(secret_key), url, hashlib.sha256).hexdigest()
else:
return hmac.new(bytes(secret_key, 'utf-8'), url, hashlib.sha256).hexdigest()
+
+
+def to_string(obj):
+ if isinstance(obj, basestring):
+ return obj
+ if isinstance(obj, Number):
+ return unicode(obj)
+ if hasattr(obj, '__str__'):
+ return obj.__str__()
+ if hasattr(obj, '__repr__'):
+ return obj.__repr__()