on master help sign in
[enh] default disabled engines - closes #109
b19e681Adam Tauber
searx/engines/__init__.py+3−3
@@ -69,17 +69,17 @@ def load_engine(engine_data):
69 engine.categories = ['general']
69 engine.categories = ['general']
70
70
71 if not hasattr(engine, 'language_support'):
71 if not hasattr(engine, 'language_support'):
72− # engine.language_support = False
73 engine.language_support = True
72 engine.language_support = True
74
73
75 if not hasattr(engine, 'timeout'):
74 if not hasattr(engine, 'timeout'):
76− # engine.language_support = False
77 engine.timeout = settings['server']['request_timeout']
75 engine.timeout = settings['server']['request_timeout']
78
76
79 if not hasattr(engine, 'shortcut'):
77 if not hasattr(engine, 'shortcut'):
80− # engine.shortcut = '''
81 engine.shortcut = ''
78 engine.shortcut = ''
82
79
80+ if not hasattr(engine, 'disabled'):
81+ engine.disabled = False
82+
83 # checking required variables
83 # checking required variables
84 for engine_attr in dir(engine):
84 for engine_attr in dir(engine):
85 if engine_attr.startswith('_'):
85 if engine_attr.startswith('_'):
searx/search.py+2−5
@@ -27,7 +27,7 @@ from searx.engines import (
27 categories, engines
27 categories, engines
28)
28)
29from searx.languages import language_codes
29from searx.languages import language_codes
30−from searx.utils import gen_useragent
30+from searx.utils import gen_useragent, get_blocked_engines
31from searx.query import Query
31from searx.query import Query
32from searx import logger
32from searx import logger
33
33
@@ -320,10 +320,7 @@ class Search(object):
320 self.lang = 'all'
320 self.lang = 'all'
321
321
322 # set blocked engines
322 # set blocked engines
323− if request.cookies.get('blocked_engines'):
323+ self.blocked_engines = get_blocked_engines(engines, request.cookies)
324− self.blocked_engines = request.cookies['blocked_engines'].split(',') # noqa
325− else:
326− self.blocked_engines = []
327
324
328 self.results = []
325 self.results = []
329 self.suggestions = []
326 self.suggestions = []
searx/settings.yml+6−1
@@ -96,6 +96,7 @@ engines:
96 - name : general-file
96 - name : general-file
97 engine : generalfile
97 engine : generalfile
98 shortcut : gf
98 shortcut : gf
99+ disabled : True
99
100
100 - name : github
101 - name : github
101 engine : github
102 engine : github
@@ -121,6 +122,7 @@ engines:
121 content_xpath : //a[@class="subtitle"]
122 content_xpath : //a[@class="subtitle"]
122 categories : files
123 categories : files
123 shortcut : gpa
124 shortcut : gpa
125+ disabled : True
124
126
125 - name : google play movies
127 - name : google play movies
126 engine : xpath
128 engine : xpath
@@ -130,6 +132,7 @@ engines:
130 content_xpath : //a[@class="subtitle"]
132 content_xpath : //a[@class="subtitle"]
131 categories : videos
133 categories : videos
132 shortcut : gpm
134 shortcut : gpm
135+ disabled : True
133
136
134 - name : google play music
137 - name : google play music
135 engine : xpath
138 engine : xpath
@@ -139,6 +142,7 @@ engines:
139 content_xpath : //a[@class="subtitle"]
142 content_xpath : //a[@class="subtitle"]
140 categories : music
143 categories : music
141 shortcut : gps
144 shortcut : gps
145+ disabled : True
142
146
143 - name : mixcloud
147 - name : mixcloud
144 engine : mixcloud
148 engine : mixcloud
@@ -175,6 +179,7 @@ engines:
175 - name : searchcode code
179 - name : searchcode code
176 engine : searchcode_code
180 engine : searchcode_code
177 shortcut : scc
181 shortcut : scc
182+ disabled : True
178
183
179 - name : subtitleseeker
184 - name : subtitleseeker
180 engine : subtitleseeker
185 engine : subtitleseeker
@@ -239,7 +244,7 @@ engines:
239# shortcut : ya
244# shortcut : ya
240# base_url : 'http://localhost:8090'
245# base_url : 'http://localhost:8090'
241# number_of_results : 5
246# number_of_results : 5
242−# timeout: 3.0
247+# timeout : 3.0
243
248
244locales:
249locales:
245 en : English
250 en : English
searx/utils.py+8
@@ -225,3 +225,11 @@ def prettify_url(url):
225 return u'{0}[...]{1}'.format(url[:35], url[-35:])
225 return u'{0}[...]{1}'.format(url[:35], url[-35:])
226 else:
226 else:
227 return url
227 return url
228+
229+
230+def get_blocked_engines(engines, cookies):
231+ if 'blocked_engines' not in cookies:
232+ return [engine for engine in engines if engines[engine].disabled]
233+
234+ return [engine for engine in cookies.get('blocked_engines', '').split(',')
235+ if engine in engines]
searx/webapp.py+4−7
@@ -43,7 +43,7 @@ from searx.engines import (
43from searx.utils import (
43from searx.utils import (
44 UnicodeWriter, highlight_content, html_to_text, get_themes,
44 UnicodeWriter, highlight_content, html_to_text, get_themes,
45 get_static_files, get_result_templates, gen_useragent, dict_subset,
45 get_static_files, get_result_templates, gen_useragent, dict_subset,
46− prettify_url
46+ prettify_url, get_blocked_engines
47)
47)
48from searx.version import VERSION_STRING
48from searx.version import VERSION_STRING
49from searx.languages import language_codes
49from searx.languages import language_codes
@@ -225,7 +225,7 @@ def image_proxify(url):
225
225
226
226
227def render(template_name, override_theme=None, **kwargs):
227def render(template_name, override_theme=None, **kwargs):
228− blocked_engines = request.cookies.get('blocked_engines', '').split(',')
228+ blocked_engines = get_blocked_engines(engines, request.cookies)
229
229
230 autocomplete = request.cookies.get('autocomplete')
230 autocomplete = request.cookies.get('autocomplete')
231
231
@@ -410,10 +410,7 @@ def autocompleter():
410 request_data = request.args
410 request_data = request.args
411
411
412 # set blocked engines
412 # set blocked engines
413− if request.cookies.get('blocked_engines'):
413+ blocked_engines = get_blocked_engines(engines, request.cookies)
414− blocked_engines = request.cookies['blocked_engines'].split(',') # noqa
415− else:
416− blocked_engines = []
417
414
418 # parse query
415 # parse query
419 query = Query(request_data.get('q', '').encode('utf-8'), blocked_engines)
416 query = Query(request_data.get('q', '').encode('utf-8'), blocked_engines)
@@ -468,7 +465,7 @@ def preferences():
468 resp = make_response(redirect(url_for('index')))
465 resp = make_response(redirect(url_for('index')))
469
466
470 if request.method == 'GET':
467 if request.method == 'GET':
471− blocked_engines = request.cookies.get('blocked_engines', '').split(',')
468+ blocked_engines = get_blocked_engines(engines, request.cookies)
472 else: # on save
469 else: # on save
473 selected_categories = []
470 selected_categories = []
474 locale = None
471 locale = None