|
@@ -36,6 +36,8 @@ engines = {}
|
36
|
36
|
|
37
|
37
|
categories = {'general': []}
|
38
|
38
|
|
|
39
|
+engine_shortcuts = {}
|
|
40
|
+
|
39
|
41
|
|
40
|
42
|
def load_module(filename):
|
41
|
43
|
modname = splitext(filename)[0]
|
|
@@ -54,13 +56,6 @@ for engine_data in settings['engines']:
|
54
|
56
|
engine_name = engine_data['engine']
|
55
|
57
|
engine = load_module(engine_name + '.py')
|
56
|
58
|
|
57
|
|
- if not hasattr(engine, 'paging'):
|
58
|
|
- engine.paging = False
|
59
|
|
-
|
60
|
|
- if not hasattr(engine, 'language_support'):
|
61
|
|
- #engine.language_support = False
|
62
|
|
- engine.language_support = True
|
63
|
|
-
|
64
|
59
|
for param_name in engine_data:
|
65
|
60
|
if param_name == 'engine':
|
66
|
61
|
continue
|
|
@@ -72,12 +67,26 @@ for engine_data in settings['engines']:
|
72
|
67
|
str.strip, engine_data['categories'].split(','))
|
73
|
68
|
continue
|
74
|
69
|
setattr(engine, param_name, engine_data[param_name])
|
|
70
|
+
|
|
71
|
+ if not hasattr(engine, 'paging'):
|
|
72
|
+ engine.paging = False
|
|
73
|
+
|
|
74
|
+ if not hasattr(engine, 'language_support'):
|
|
75
|
+ #engine.language_support = False
|
|
76
|
+ engine.language_support = True
|
|
77
|
+
|
|
78
|
+ if not hasattr(engine, 'shortcut'):
|
|
79
|
+ #engine.language_support = False
|
|
80
|
+ engine.shortcut = ''
|
|
81
|
+
|
|
82
|
+ # checking required variables
|
75
|
83
|
for engine_attr in dir(engine):
|
76
|
84
|
if engine_attr.startswith('_'):
|
77
|
85
|
continue
|
78
|
86
|
if getattr(engine, engine_attr) is None:
|
79
|
87
|
print '[E] Engine config error: Missing attribute "{0}.{1}"'.format(engine.name, engine_attr) # noqa
|
80
|
88
|
sys.exit(1)
|
|
89
|
+
|
81
|
90
|
engines[engine.name] = engine
|
82
|
91
|
engine.stats = {
|
83
|
92
|
'result_count': 0,
|
|
@@ -86,12 +95,17 @@ for engine_data in settings['engines']:
|
86
|
95
|
'score_count': 0,
|
87
|
96
|
'errors': 0
|
88
|
97
|
}
|
|
98
|
+
|
89
|
99
|
if hasattr(engine, 'categories'):
|
90
|
100
|
for category_name in engine.categories:
|
91
|
101
|
categories.setdefault(category_name, []).append(engine)
|
92
|
102
|
else:
|
93
|
103
|
categories['general'].append(engine)
|
94
|
104
|
|
|
105
|
+ if engine.shortcut:
|
|
106
|
+ # TODO check duplications
|
|
107
|
+ engine_shortcuts[engine.shortcut] = engine.name
|
|
108
|
+
|
95
|
109
|
|
96
|
110
|
def default_request_params():
|
97
|
111
|
return {
|