[enh] settings unification - new dependency: pyyaml

This commit is contained in:
asciimoo 2014-01-19 00:17:02 +01:00
parent 39ebe1d519
commit 3afdd1d994
10 changed files with 150 additions and 121 deletions

View file

@ -0,0 +1,22 @@
from os import environ
from os.path import realpath, dirname, join
try:
from yaml import load
except:
from sys import exit, stderr
stderr.write('[E] install pyyaml\n')
exit(2)
searx_dir = realpath(dirname(realpath(__file__))+'/../')
engine_dir = dirname(realpath(__file__))
if 'SEARX_SETTINGS_PATH' in environ:
settings_path = environ['SEARX_SETTINGS_PATH']
else:
settings_path = join(searx_dir, 'settings.yml')
with open(settings_path) as settings_yaml:
settings = load(settings_yaml)

View file

@ -24,15 +24,11 @@ from operator import itemgetter
from urlparse import urlparse
from searx import settings
from searx.utils import gen_useragent
import ConfigParser
import sys
from datetime import datetime
engine_dir = dirname(realpath(__file__))
searx_dir = join(engine_dir, '../../')
engines_config = ConfigParser.SafeConfigParser()
engines_config.read(join(searx_dir, 'engines.cfg'))
number_of_searches = 0
engines = {}
@ -48,24 +44,23 @@ def load_module(filename):
module.name = modname
return module
if not engines_config.sections():
print '[E] Error no engines found. Edit your engines.cfg'
if not 'engines' in settings or not settings['engines']:
print '[E] Error no engines found. Edit your settings.yml'
exit(2)
for engine_config_name in engines_config.sections():
engine_data = engines_config.options(engine_config_name)
engine = load_module(engines_config.get(engine_config_name, 'engine')+'.py')
engine.name = engine_config_name
for engine_data in settings['engines']:
engine_name = engine_data['engine']
engine = load_module(engine_name+'.py')
for param_name in engine_data:
if param_name == 'engine':
continue
if param_name == 'categories':
if engines_config.get(engine_config_name, param_name) == 'none':
if engine_data['categories'] == 'none':
engine.categories = []
else:
engine.categories = map(str.strip, engines_config.get(engine_config_name, param_name).split(','))
engine.categories = map(str.strip, engine_data['categories'].split(','))
continue
setattr(engine, param_name, engines_config.get(engine_config_name, param_name))
setattr(engine, param_name, engine_data[param_name])
for engine_attr in dir(engine):
if engine_attr.startswith('_'):
continue
@ -170,7 +165,7 @@ def search(query, request, selected_engines):
request_args = dict(headers = request_params['headers']
,hooks = dict(response=callback)
,cookies = request_params['cookies']
,timeout = settings.request_timeout
,timeout = settings['server']['request_timeout']
)
if request_params['method'] == 'GET':

View file

@ -41,7 +41,7 @@ from searx.utils import highlight_content, html_to_text
app = Flask(__name__)
app.secret_key = settings.secret_key
app.secret_key = settings['server']['secret_key']
opensearch_xml = '''<?xml version="1.0" encoding="utf-8"?>
@ -58,8 +58,8 @@ opensearch_xml = '''<?xml version="1.0" encoding="utf-8"?>
def get_base_url():
if settings.base_url:
hostname = settings.base_url
if settings['server']['base_url']:
hostname = settings['server']['base_url']
else:
scheme = 'http'
if request.is_secure:
@ -243,9 +243,9 @@ def run():
from gevent import monkey
monkey.patch_all()
app.run(debug = settings.debug
,use_debugger = settings.debug
,port = settings.port
app.run(debug = settings['server']['debug']
,use_debugger = settings['server']['debug']
,port = settings['server']['port']
)