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,17 +69,17 @@ def load_engine(engine_data):
69 69
         engine.categories = ['general']
70 70
 
71 71
     if not hasattr(engine, 'language_support'):
72
-        # engine.language_support = False
73 72
         engine.language_support = True
74 73
 
75 74
     if not hasattr(engine, 'timeout'):
76
-        # engine.language_support = False
77 75
         engine.timeout = settings['server']['request_timeout']
78 76
 
79 77
     if not hasattr(engine, 'shortcut'):
80
-        # engine.shortcut = '''
81 78
         engine.shortcut = ''
82 79
 
80
+    if not hasattr(engine, 'disabled'):
81
+        engine.disabled = False
82
+
83 83
     # checking required variables
84 84
     for engine_attr in dir(engine):
85 85
         if engine_attr.startswith('_'):

+ 2
- 5
searx/search.py View File

@@ -27,7 +27,7 @@ from searx.engines import (
27 27
     categories, engines
28 28
 )
29 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 31
 from searx.query import Query
32 32
 from searx import logger
33 33
 
@@ -320,10 +320,7 @@ class Search(object):
320 320
         self.lang = 'all'
321 321
 
322 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 325
         self.results = []
329 326
         self.suggestions = []

+ 6
- 1
searx/settings.yml View File

@@ -96,6 +96,7 @@ engines:
96 96
   - name : general-file
97 97
     engine : generalfile
98 98
     shortcut : gf
99
+    disabled : True
99 100
 
100 101
   - name : github
101 102
     engine : github
@@ -121,6 +122,7 @@ engines:
121 122
     content_xpath : //a[@class="subtitle"]
122 123
     categories : files
123 124
     shortcut : gpa
125
+    disabled : True
124 126
 
125 127
   - name : google play movies
126 128
     engine        : xpath
@@ -130,6 +132,7 @@ engines:
130 132
     content_xpath : //a[@class="subtitle"]
131 133
     categories : videos
132 134
     shortcut : gpm
135
+    disabled : True
133 136
 
134 137
   - name : google play music
135 138
     engine        : xpath
@@ -139,6 +142,7 @@ engines:
139 142
     content_xpath : //a[@class="subtitle"]
140 143
     categories : music
141 144
     shortcut : gps
145
+    disabled : True
142 146
 
143 147
   - name : mixcloud
144 148
     engine : mixcloud
@@ -175,6 +179,7 @@ engines:
175 179
   - name : searchcode code
176 180
     engine : searchcode_code
177 181
     shortcut : scc
182
+    disabled : True
178 183
 
179 184
   - name : subtitleseeker
180 185
     engine : subtitleseeker
@@ -239,7 +244,7 @@ engines:
239 244
 #    shortcut : ya
240 245
 #    base_url : 'http://localhost:8090'
241 246
 #    number_of_results : 5
242
-#    timeout: 3.0
247
+#    timeout : 3.0
243 248
 
244 249
 locales:
245 250
     en : English

+ 8
- 0
searx/utils.py View File

@@ -225,3 +225,11 @@ def prettify_url(url):
225 225
         return u'{0}[...]{1}'.format(url[:35], url[-35:])
226 226
     else:
227 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,7 +43,7 @@ from searx.engines import (
43 43
 from searx.utils import (
44 44
     UnicodeWriter, highlight_content, html_to_text, get_themes,
45 45
     get_static_files, get_result_templates, gen_useragent, dict_subset,
46
-    prettify_url
46
+    prettify_url, get_blocked_engines
47 47
 )
48 48
 from searx.version import VERSION_STRING
49 49
 from searx.languages import language_codes
@@ -225,7 +225,7 @@ def image_proxify(url):
225 225
 
226 226
 
227 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 230
     autocomplete = request.cookies.get('autocomplete')
231 231
 
@@ -410,10 +410,7 @@ def autocompleter():
410 410
         request_data = request.args
411 411
 
412 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 415
     # parse query
419 416
     query = Query(request_data.get('q', '').encode('utf-8'), blocked_engines)
@@ -468,7 +465,7 @@ def preferences():
468 465
     resp = make_response(redirect(url_for('index')))
469 466
 
470 467
     if request.method == 'GET':
471
-        blocked_engines = request.cookies.get('blocked_engines', '').split(',')
468
+        blocked_engines = get_blocked_engines(engines, request.cookies)
472 469
     else:  # on save
473 470
         selected_categories = []
474 471
         locale = None