Browse Source

[enh] default disabled engines - closes #109

Adam Tauber 10 years ago
parent
commit
b19e681cce
5 changed files with 23 additions and 16 deletions
  1. 3
    3
      searx/engines/__init__.py
  2. 2
    5
      searx/search.py
  3. 6
    1
      searx/settings.yml
  4. 8
    0
      searx/utils.py
  5. 4
    7
      searx/webapp.py

+ 3
- 3
searx/engines/__init__.py View File

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('_'):

+ 2
- 5
searx/search.py View File

27
     categories, engines
27
     categories, engines
28
 )
28
 )
29
 from searx.languages import language_codes
29
 from searx.languages import language_codes
30
-from searx.utils import gen_useragent
30
+from searx.utils import gen_useragent, get_blocked_engines
31
 from searx.query import Query
31
 from searx.query import Query
32
 from searx import logger
32
 from searx import logger
33
 
33
 
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'):
324
-            self.blocked_engines = request.cookies['blocked_engines'].split(',')  # noqa
325
-        else:
326
-            self.blocked_engines = []
323
+        self.blocked_engines = get_blocked_engines(engines, request.cookies)
327
 
324
 
328
         self.results = []
325
         self.results = []
329
         self.suggestions = []
326
         self.suggestions = []

+ 6
- 1
searx/settings.yml View File

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
     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
     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
     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
   - 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
 #    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
 
244
 locales:
249
 locales:
245
     en : English
250
     en : English

+ 8
- 0
searx/utils.py View File

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]

+ 4
- 7
searx/webapp.py View File

43
 from searx.utils import (
43
 from 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
 )
48
 from searx.version import VERSION_STRING
48
 from searx.version import VERSION_STRING
49
 from searx.languages import language_codes
49
 from searx.languages import language_codes
225
 
225
 
226
 
226
 
227
 def render(template_name, override_theme=None, **kwargs):
227
 def 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
         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'):
414
-        blocked_engines = request.cookies['blocked_engines'].split(',')  # noqa
415
-    else:
416
-        blocked_engines = []
413
+    blocked_engines = get_blocked_engines(engines, request.cookies)
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
     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