on master help sign in
[mod] engine load refactor
2cfa760Adam Tauber
searx/engines/__init__.py+11−5
@@ -41,11 +41,8 @@ def load_module(filename):
41 module.name = modname
41 module.name = modname
42 return module
42 return module
43
43
44−if 'engines' not in settings or not settings['engines']:
45− print '[E] Error no engines found. Edit your settings.yml'
46− exit(2)
47
44
48−for engine_data in settings['engines']:
45+def load_engine(engine_data):
49 engine_name = engine_data['engine']
46 engine_name = engine_data['engine']
50 engine = load_module(engine_name + '.py')
47 engine = load_module(engine_name + '.py')
51
48
@@ -87,7 +84,6 @@ for engine_data in settings['engines']:
87 print '[E] Engine config error: Missing attribute "{0}.{1}"'.format(engine.name, engine_attr) # noqa
84 print '[E] Engine config error: Missing attribute "{0}.{1}"'.format(engine.name, engine_attr) # noqa
88 sys.exit(1)
85 sys.exit(1)
89
86
90− engines[engine.name] = engine
91 engine.stats = {
87 engine.stats = {
92 'result_count': 0,
88 'result_count': 0,
93 'search_count': 0,
89 'search_count': 0,
@@ -105,6 +101,7 @@ for engine_data in settings['engines']:
105 if engine.shortcut:
101 if engine.shortcut:
106 # TODO check duplications
102 # TODO check duplications
107 engine_shortcuts[engine.shortcut] = engine.name
103 engine_shortcuts[engine.shortcut] = engine.name
104+ return engine
108
105
109
106
110def get_engines_stats():
107def get_engines_stats():
@@ -194,3 +191,12 @@ def get_engines_stats():
194 sorted(errors, key=itemgetter('avg'), reverse=True)
191 sorted(errors, key=itemgetter('avg'), reverse=True)
195 ),
192 ),
196 ]
193 ]
194+
195+
196+if 'engines' not in settings or not settings['engines']:
197+ print '[E] Error no engines found. Edit your settings.yml'
198+ exit(2)
199+
200+for engine_data in settings['engines']:
201+ engine = load_engine(engine_data)
202+ engines[engine.name] = engine