@@ -23,16 +23,12 @@ from itertools import izip_longest, chain
2323from operator import itemgetter
2424from urlparse import urlparse
2525from searx import settings
26−from searx.utils import get_useragent
27−import ConfigParser
26+from searx.utils import gen_useragent
2827import sys
2928from datetime import datetime
3029
3130engine_dir = dirname(realpath(__file__))
32−searx_dir = join(engine_dir, '../../')
3331
34−engines_config = ConfigParser.SafeConfigParser()
35−engines_config.read(join(searx_dir, 'engines.cfg'))
3632number_of_searches = 0
3733
3834engines = {}
@@ -48,24 +44,23 @@ def load_module(filename):
4844 module.name = modname
4945 return module
5046
51−if not engines_config.sections():
52− print '[E] Error no engines found. Edit your engines.cfg'
47+if not 'engines' in settings or not settings['engines']:
48+ print '[E] Error no engines found. Edit your settings.yml'
5349 exit(2)
5450
55−for engine_config_name in engines_config.sections():
56− engine_data = engines_config.options(engine_config_name)
57− engine = load_module(engines_config.get(engine_config_name, 'engine')+'.py')
58− engine.name = engine_config_name
51+for engine_data in settings['engines']:
52+ engine_name = engine_data['engine']
53+ engine = load_module(engine_name+'.py')
5954 for param_name in engine_data:
6055 if param_name == 'engine':
6156 continue
6257 if param_name == 'categories':
63− if engines_config.get(engine_config_name, param_name) == 'none':
58+ if engine_data['categories'] == 'none':
6459 engine.categories = []
6560 else:
66− engine.categories = map(str.strip, engines_config.get(engine_config_name, param_name).split(','))
61+ engine.categories = map(str.strip, engine_data['categories'].split(','))
6762 continue
68− setattr(engine, param_name, engines_config.get(engine_config_name, param_name))
63+ setattr(engine, param_name, engine_data[param_name])
6964 for engine_attr in dir(engine):
7065 if engine_attr.startswith('_'):
7166 continue
@@ -118,8 +113,6 @@ def score_results(results):
118113 weight = 1.0
119114 if hasattr(engines[res['engine']], 'weight'):
120115 weight = float(engines[res['engine']].weight)
121− elif res['engine'] in settings.weights:
122− weight = float(settings.weights[res['engine']])
123116 score = int((flat_len - i)/engines_len)*weight+1
124117 duplicated = False
125118 for new_res in results:
@@ -153,7 +146,7 @@ def search(query, request, selected_engines):
153146 suggestions = set()
154147 number_of_searches += 1
155148 #user_agent = request.headers.get('User-Agent', '')
156− user_agent = get_useragent()
149+ user_agent = gen_useragent()
157150
158151 for selected_engine in selected_engines:
159152 if selected_engine['name'] not in engines:
@@ -172,7 +165,7 @@ def search(query, request, selected_engines):
172165 request_args = dict(headers = request_params['headers']
173166 ,hooks = dict(response=callback)
174167 ,cookies = request_params['cookies']
175− ,timeout = settings.request_timeout
168+ ,timeout = settings['server']['request_timeout']
176169 )
177170
178171 if request_params['method'] == 'GET':