ソースを参照

[enh] shortcut support added to engines

asciimoo 11 年 前
コミット
88425f05d6
共有1 個のファイルを変更した21 個の追加7 個の削除を含む
  1. 21
    7
      searx/engines/__init__.py

+ 21
- 7
searx/engines/__init__.py ファイルの表示

@@ -36,6 +36,8 @@ engines = {}
36 36
 
37 37
 categories = {'general': []}
38 38
 
39
+engine_shortcuts = {}
40
+
39 41
 
40 42
 def load_module(filename):
41 43
     modname = splitext(filename)[0]
@@ -54,13 +56,6 @@ for engine_data in settings['engines']:
54 56
     engine_name = engine_data['engine']
55 57
     engine = load_module(engine_name + '.py')
56 58
 
57
-    if not hasattr(engine, 'paging'):
58
-        engine.paging = False
59
-
60
-    if not hasattr(engine, 'language_support'):
61
-        #engine.language_support = False
62
-        engine.language_support = True
63
-
64 59
     for param_name in engine_data:
65 60
         if param_name == 'engine':
66 61
             continue
@@ -72,12 +67,26 @@ for engine_data in settings['engines']:
72 67
                     str.strip, engine_data['categories'].split(','))
73 68
             continue
74 69
         setattr(engine, param_name, engine_data[param_name])
70
+
71
+    if not hasattr(engine, 'paging'):
72
+        engine.paging = False
73
+
74
+    if not hasattr(engine, 'language_support'):
75
+        #engine.language_support = False
76
+        engine.language_support = True
77
+
78
+    if not hasattr(engine, 'shortcut'):
79
+        #engine.language_support = False
80
+        engine.shortcut = ''
81
+
82
+    # checking required variables
75 83
     for engine_attr in dir(engine):
76 84
         if engine_attr.startswith('_'):
77 85
             continue
78 86
         if getattr(engine, engine_attr) is None:
79 87
             print '[E] Engine config error: Missing attribute "{0}.{1}"'.format(engine.name, engine_attr)  # noqa
80 88
             sys.exit(1)
89
+
81 90
     engines[engine.name] = engine
82 91
     engine.stats = {
83 92
         'result_count': 0,
@@ -86,12 +95,17 @@ for engine_data in settings['engines']:
86 95
         'score_count': 0,
87 96
         'errors': 0
88 97
     }
98
+
89 99
     if hasattr(engine, 'categories'):
90 100
         for category_name in engine.categories:
91 101
             categories.setdefault(category_name, []).append(engine)
92 102
     else:
93 103
         categories['general'].append(engine)
94 104
 
105
+    if engine.shortcut:
106
+        # TODO check duplications
107
+        engine_shortcuts[engine.shortcut] = engine.name
108
+
95 109
 
96 110
 def default_request_params():
97 111
     return {