summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Flament <alex@al-f.net>2019-07-27 09:11:03 +0200
committerGitHub <noreply@github.com>2019-07-27 09:11:03 +0200
commit4b56a4bfaa74c64def58f03ecdd78ed884edf4b2 (patch)
tree9e0ddedb39a40dbddc3d36a33870960c8de48d81
parente1bb0e33f23f7cf089f24b536283bac67cc09528 (diff)
parent70a01e5f024c8845d6ee049c4d0ebd1bf73625ea (diff)
downloadsearxng-4b56a4bfaa74c64def58f03ecdd78ed884edf4b2.tar.gz
searxng-4b56a4bfaa74c64def58f03ecdd78ed884edf4b2.zip
Merge pull request #1653 from dalf/bug-fixes
Various bug fixes
-rw-r--r--searx/engines/__init__.py25
-rw-r--r--searx/results.py15
-rw-r--r--searx/search.py9
-rw-r--r--searx/settings.yml2
-rw-r--r--searx/webapp.py2
5 files changed, 39 insertions, 14 deletions
diff --git a/searx/engines/__init__.py b/searx/engines/__init__.py
index f32b57202..a10b1ccd9 100644
--- a/searx/engines/__init__.py
+++ b/searx/engines/__init__.py
@@ -57,11 +57,16 @@ engine_default_args = {'paging': False,
def load_engine(engine_data):
-
- if '_' in engine_data['name']:
- logger.error('Engine name conains underscore: "{}"'.format(engine_data['name']))
+ engine_name = engine_data['name']
+ if '_' in engine_name:
+ logger.error('Engine name contains underscore: "{}"'.format(engine_name))
sys.exit(1)
+ if engine_name.lower() != engine_name:
+ logger.warn('Engine name is not lowercase: "{}", converting to lowercase'.format(engine_name))
+ engine_name = engine_name.lower()
+ engine_data['name'] = engine_name
+
engine_module = engine_data['engine']
try:
@@ -248,12 +253,14 @@ def load_engines(engine_list):
def initialize_engines(engine_list):
load_engines(engine_list)
+
+ def engine_init(engine_name, init_fn):
+ init_fn()
+ logger.debug('%s engine: Initialized', engine_name)
+
for engine_name, engine in engines.items():
if hasattr(engine, 'init'):
init_fn = getattr(engine, 'init')
-
- def engine_init():
- init_fn()
- logger.debug('%s engine initialized', engine_name)
- logger.debug('Starting background initialization of %s engine', engine_name)
- threading.Thread(target=engine_init).start()
+ if init_fn:
+ logger.debug('%s engine: Starting background initialization', engine_name)
+ threading.Thread(target=engine_init, args=(engine_name, init_fn)).start()
diff --git a/searx/results.py b/searx/results.py
index d3f2ecd0d..be74a836b 100644
--- a/searx/results.py
+++ b/searx/results.py
@@ -212,11 +212,20 @@ class ResultContainer(object):
# check for duplicates
duplicated = False
+ result_template = result.get('template')
for merged_result in self._merged_results:
if compare_urls(result['parsed_url'], merged_result['parsed_url'])\
- and result.get('template') == merged_result.get('template'):
- duplicated = merged_result
- break
+ and result_template == merged_result.get('template'):
+ if result_template != 'images.html':
+ # not an image, same template, same url : it's a duplicate
+ duplicated = merged_result
+ break
+ else:
+ # it's an image
+ # it's a duplicate if the parsed_url, template and img_src are differents
+ if result.get('img_src', '') == merged_result.get('img_src', ''):
+ duplicated = merged_result
+ break
# merge duplicates together
if duplicated:
diff --git a/searx/search.py b/searx/search.py
index 465b5ce64..1472073bd 100644
--- a/searx/search.py
+++ b/searx/search.py
@@ -198,6 +198,13 @@ def default_request_params():
}
+# remove duplicate queries.
+# FIXME: does not fix "!music !soundcloud", because the categories are 'none' and 'music'
+def deduplicate_query_engines(query_engines):
+ uniq_query_engines = {q["category"] + '|' + q["name"]: q for q in query_engines}
+ return uniq_query_engines.values()
+
+
def get_search_query_from_webapp(preferences, form):
# no text for the query ?
if not form.get('q'):
@@ -328,6 +335,8 @@ def get_search_query_from_webapp(preferences, form):
for engine in categories[categ]
if (engine.name, categ) not in disabled_engines)
+ query_engines = deduplicate_query_engines(query_engines)
+
return (SearchQuery(query, query_engines, query_categories,
query_lang, query_safesearch, query_pageno, query_time_range),
raw_text_query)
diff --git a/searx/settings.yml b/searx/settings.yml
index bee7aed7e..bdf9e6c33 100644
--- a/searx/settings.yml
+++ b/searx/settings.yml
@@ -707,7 +707,7 @@ engines:
shortcut : 1337x
disabled : True
- - name : Duden
+ - name : duden
engine : duden
shortcut : du
disabled : True
diff --git a/searx/webapp.py b/searx/webapp.py
index 856b013af..ee445e6f7 100644
--- a/searx/webapp.py
+++ b/searx/webapp.py
@@ -916,7 +916,7 @@ def page_not_found(e):
def run():
- logger.debug('starting webserver on %s:%s', settings['server']['port'], settings['server']['bind_address'])
+ logger.debug('starting webserver on %s:%s', settings['server']['bind_address'], settings['server']['port'])
app.run(
debug=searx_debug,
use_debugger=searx_debug,