|
@@ -51,20 +51,20 @@ if not engines_config.sections():
|
51
|
51
|
print '[E] Error no engines found. Edit your engines.cfg'
|
52
|
52
|
exit(2)
|
53
|
53
|
|
54
|
|
-for section in engines_config.sections():
|
55
|
|
- engine_data = engines_config.options(section)
|
56
|
|
- engine = load_module(engines_config.get(section, 'engine')+'.py')
|
57
|
|
- engine.name = section
|
|
54
|
+for engine_config_name in engines_config.sections():
|
|
55
|
+ engine_data = engines_config.options(engine_config_name)
|
|
56
|
+ engine = load_module(engines_config.get(engine_config_name, 'engine')+'.py')
|
|
57
|
+ engine.name = engine_config_name
|
58
|
58
|
for param_name in engine_data:
|
59
|
59
|
if param_name == 'engine':
|
60
|
60
|
continue
|
61
|
61
|
if param_name == 'categories':
|
62
|
|
- if engines_config.get(section, param_name) == 'none':
|
|
62
|
+ if engines_config.get(engine_config_name, param_name) == 'none':
|
63
|
63
|
engine.categories = []
|
64
|
64
|
else:
|
65
|
|
- engine.categories = map(str.strip, engines_config.get(section, param_name).split(','))
|
|
65
|
+ engine.categories = map(str.strip, engines_config.get(engine_config_name, param_name).split(','))
|
66
|
66
|
continue
|
67
|
|
- setattr(engine, param_name, engines_config.get(section, param_name))
|
|
67
|
+ setattr(engine, param_name, engines_config.get(engine_config_name, param_name))
|
68
|
68
|
for engine_attr in dir(engine):
|
69
|
69
|
if engine_attr.startswith('_'):
|
70
|
70
|
continue
|
|
@@ -161,7 +161,12 @@ def search(query, request, selected_engines):
|
161
|
161
|
for i,res in enumerate(flat_res):
|
162
|
162
|
res['parsed_url'] = urlparse(res['url'])
|
163
|
163
|
res['engines'] = [res['engine']]
|
164
|
|
- score = int((flat_len - i)/engines_len)*settings.weights.get(res['engine'], 1)+1
|
|
164
|
+ weight = 1.0
|
|
165
|
+ if hasattr(engines[res['engine']], 'weight'):
|
|
166
|
+ weight = float(engines[res['engine']].weight)
|
|
167
|
+ elif res['engine'] in settings.weights:
|
|
168
|
+ weight = float(settings.weights[res['engine']])
|
|
169
|
+ score = int((flat_len - i)/engines_len)*weight+1
|
165
|
170
|
duplicated = False
|
166
|
171
|
for new_res in results:
|
167
|
172
|
p1 = res['parsed_url'].path[:-1] if res['parsed_url'].path.endswith('/') else res['parsed_url'].path
|