logo

searx

My custom branche(s) on searx, a meta-search engine
commit: 0969e50c5bc949d2c15eaed8e6a7def6b9da00fa
parent: a065fcdcc95beaf7028b55c9bd82591add99a890
Author: Adam Tauber <asciimoo@gmail.com>
Date:   Fri,  1 Dec 2017 20:45:24 +0100

[fix] convert json engine result attributes to string - closes #1006

Diffstat:

Msearx/engines/json_engine.py13+++++++++++--
Msearx/utils.py12++++++++++++
2 files changed, 23 insertions(+), 2 deletions(-)

diff --git 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 @@ -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__()