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

@@ -69,17 +69,17 @@ def load_engine(engine_data):
         engine.categories = ['general']
 
     if not hasattr(engine, 'language_support'):
-        # engine.language_support = False
         engine.language_support = True
 
     if not hasattr(engine, 'timeout'):
-        # engine.language_support = False
         engine.timeout = settings['server']['request_timeout']
 
     if not hasattr(engine, 'shortcut'):
-        # engine.shortcut = '''
         engine.shortcut = ''
 
+    if not hasattr(engine, 'disabled'):
+        engine.disabled = False
+
     # checking required variables
     for engine_attr in dir(engine):
         if engine_attr.startswith('_'):

+ 2 - 5
searx/search.py

@@ -27,7 +27,7 @@ from searx.engines import (
     categories, engines
 )
 from searx.languages import language_codes
-from searx.utils import gen_useragent
+from searx.utils import gen_useragent, get_blocked_engines
 from searx.query import Query
 from searx import logger
 
@@ -320,10 +320,7 @@ class Search(object):
         self.lang = 'all'
 
         # set blocked engines
-        if request.cookies.get('blocked_engines'):
-            self.blocked_engines = request.cookies['blocked_engines'].split(',')  # noqa
-        else:
-            self.blocked_engines = []
+        self.blocked_engines = get_blocked_engines(engines, request.cookies)
 
         self.results = []
         self.suggestions = []

+ 6 - 1
searx/settings.yml

@@ -96,6 +96,7 @@ engines:
   - name : general-file
     engine : generalfile
     shortcut : gf
+    disabled : True
 
   - name : github
     engine : github
@@ -121,6 +122,7 @@ engines:
     content_xpath : //a[@class="subtitle"]
     categories : files
     shortcut : gpa
+    disabled : True
 
   - name : google play movies
     engine        : xpath
@@ -130,6 +132,7 @@ engines:
     content_xpath : //a[@class="subtitle"]
     categories : videos
     shortcut : gpm
+    disabled : True
 
   - name : google play music
     engine        : xpath
@@ -139,6 +142,7 @@ engines:
     content_xpath : //a[@class="subtitle"]
     categories : music
     shortcut : gps
+    disabled : True
 
   - name : mixcloud
     engine : mixcloud
@@ -175,6 +179,7 @@ engines:
   - name : searchcode code
     engine : searchcode_code
     shortcut : scc
+    disabled : True
 
   - name : subtitleseeker
     engine : subtitleseeker
@@ -239,7 +244,7 @@ engines:
 #    shortcut : ya
 #    base_url : 'http://localhost:8090'
 #    number_of_results : 5
-#    timeout: 3.0
+#    timeout : 3.0
 
 locales:
     en : English

+ 8 - 0
searx/utils.py

@@ -225,3 +225,11 @@ def prettify_url(url):
         return u'{0}[...]{1}'.format(url[:35], url[-35:])
     else:
         return url
+
+
+def get_blocked_engines(engines, cookies):
+    if 'blocked_engines' not in cookies:
+        return [engine for engine in engines if engines[engine].disabled]
+
+    return [engine for engine in cookies.get('blocked_engines', '').split(',')
+            if engine in engines]

+ 4 - 7
searx/webapp.py

@@ -43,7 +43,7 @@ from searx.engines import (
 from searx.utils import (
     UnicodeWriter, highlight_content, html_to_text, get_themes,
     get_static_files, get_result_templates, gen_useragent, dict_subset,
-    prettify_url
+    prettify_url, get_blocked_engines
 )
 from searx.version import VERSION_STRING
 from searx.languages import language_codes
@@ -225,7 +225,7 @@ def image_proxify(url):
 
 
 def render(template_name, override_theme=None, **kwargs):
-    blocked_engines = request.cookies.get('blocked_engines', '').split(',')
+    blocked_engines = get_blocked_engines(engines, request.cookies)
 
     autocomplete = request.cookies.get('autocomplete')
 
@@ -410,10 +410,7 @@ def autocompleter():
         request_data = request.args
 
     # set blocked engines
-    if request.cookies.get('blocked_engines'):
-        blocked_engines = request.cookies['blocked_engines'].split(',')  # noqa
-    else:
-        blocked_engines = []
+    blocked_engines = get_blocked_engines(engines, request.cookies)
 
     # parse query
     query = Query(request_data.get('q', '').encode('utf-8'), blocked_engines)
@@ -468,7 +465,7 @@ def preferences():
     resp = make_response(redirect(url_for('index')))
 
     if request.method == 'GET':
-        blocked_engines = request.cookies.get('blocked_engines', '').split(',')
+        blocked_engines = get_blocked_engines(engines, request.cookies)
     else:  # on save
         selected_categories = []
         locale = None