瀏覽代碼

[enh] improve gigablast engine

Thomas Pointhuber 9 年之前
父節點
當前提交
b9a9abe10d
共有 2 個檔案被更改,包括 31 行新增9 行删除
  1. 30
    9
      searx/engines/gigablast.py
  2. 1
    0
      searx/tests/engines/test_gigablast.py

+ 30
- 9
searx/engines/gigablast.py 查看文件

@@ -19,11 +19,21 @@ from time import time
19 19
 # engine dependent config
20 20
 categories = ['general']
21 21
 paging = True
22
-number_of_results = 5
22
+number_of_results = 10
23
+language_support = True
24
+safesearch = True
23 25
 
24
-# search-url, invalid HTTPS certificate
26
+# search-url
25 27
 base_url = 'https://gigablast.com/'
26
-search_string = 'search?{query}&n={number_of_results}&s={offset}&format=xml&qh=0&rxiyd={rxiyd}&rand={rand}'
28
+search_string = 'search?{query}'\
29
+    '&n={number_of_results}'\
30
+    '&s={offset}'\
31
+    '&format=xml'\
32
+    '&qh=0'\
33
+    '&rxiyd={rxiyd}'\
34
+    '&rand={rand}'\
35
+    '&qlang={lang}'\
36
+    '&ff={safesearch}'
27 37
 
28 38
 # specific xpath variables
29 39
 results_xpath = '//response//result'
@@ -36,12 +46,23 @@ content_xpath = './/sum'
36 46
 def request(query, params):
37 47
     offset = (params['pageno'] - 1) * number_of_results
38 48
 
39
-    search_path = search_string.format(
40
-        query=urlencode({'q': query}),
41
-        offset=offset,
42
-        number_of_results=number_of_results,
43
-        rxiyd=randint(10000, 10000000),
44
-        rand=int(time()))
49
+    if params['language'] == 'all':
50
+        language = 'xx'
51
+    else:
52
+        language = params['language'][0:2]
53
+
54
+    if params['safesearch'] >= 1:
55
+        safesearch = 1
56
+    else:
57
+        safesearch = 0
58
+
59
+    search_path = search_string.format(query=urlencode({'q': query}),
60
+                                       offset=offset,
61
+                                       number_of_results=number_of_results,
62
+                                       rxiyd=randint(10000, 10000000),
63
+                                       rand=int(time()),
64
+                                       lang=language,
65
+                                       safesearch=safesearch)
45 66
 
46 67
     params['url'] = base_url + search_path
47 68
 

+ 1
- 0
searx/tests/engines/test_gigablast.py 查看文件

@@ -10,6 +10,7 @@ class TestGigablastEngine(SearxTestCase):
10 10
         query = 'test_query'
11 11
         dicto = defaultdict(dict)
12 12
         dicto['pageno'] = 0
13
+        dicto['language'] = 'all'
13 14
         params = gigablast.request(query, dicto)
14 15
         self.assertTrue('url' in params)
15 16
         self.assertTrue(query in params['url'])