|
@@ -16,13 +16,13 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >.
|
16
|
16
|
(C) 2013- by Adam Tauber, <asciimoo@gmail.com>
|
17
|
17
|
'''
|
18
|
18
|
|
19
|
|
-from os.path import realpath, dirname, splitext, join
|
|
19
|
+from os.path import realpath, dirname
|
20
|
20
|
import sys
|
21
|
|
-from imp import load_source
|
22
|
21
|
from flask_babel import gettext
|
23
|
22
|
from operator import itemgetter
|
24
|
23
|
from searx import settings
|
25
|
24
|
from searx import logger
|
|
25
|
+from searx.utils import load_module
|
26
|
26
|
|
27
|
27
|
|
28
|
28
|
logger = logger.getChild('engines')
|
|
@@ -32,6 +32,7 @@ engine_dir = dirname(realpath(__file__))
|
32
|
32
|
engines = {}
|
33
|
33
|
|
34
|
34
|
categories = {'general': []}
|
|
35
|
+_initialized = False
|
35
|
36
|
|
36
|
37
|
engine_shortcuts = {}
|
37
|
38
|
engine_default_args = {'paging': False,
|
|
@@ -46,16 +47,6 @@ engine_default_args = {'paging': False,
|
46
|
47
|
'time_range_support': False}
|
47
|
48
|
|
48
|
49
|
|
49
|
|
-def load_module(filename):
|
50
|
|
- modname = splitext(filename)[0]
|
51
|
|
- if modname in sys.modules:
|
52
|
|
- del sys.modules[modname]
|
53
|
|
- filepath = join(engine_dir, filename)
|
54
|
|
- module = load_source(modname, filepath)
|
55
|
|
- module.name = modname
|
56
|
|
- return module
|
57
|
|
-
|
58
|
|
-
|
59
|
50
|
def load_engine(engine_data):
|
60
|
51
|
|
61
|
52
|
if '_' in engine_data['name']:
|
|
@@ -65,7 +56,7 @@ def load_engine(engine_data):
|
65
|
56
|
engine_module = engine_data['engine']
|
66
|
57
|
|
67
|
58
|
try:
|
68
|
|
- engine = load_module(engine_module + '.py')
|
|
59
|
+ engine = load_module(engine_module + '.py', engine_dir)
|
69
|
60
|
except:
|
70
|
61
|
logger.exception('Cannot load engine "{}"'.format(engine_module))
|
71
|
62
|
return None
|