浏览代码

add time range search for bing news

Noémi Ványi 8 年前
父节点
当前提交
f70d405202
共有 2 个文件被更改,包括 20 次插入5 次删除
  1. 19
    5
      searx/engines/bing_news.py
  2. 1
    0
      tests/unit/engines/test_bing_news.py

+ 19
- 5
searx/engines/bing_news.py 查看文件

22
 categories = ['news']
22
 categories = ['news']
23
 paging = True
23
 paging = True
24
 language_support = True
24
 language_support = True
25
+time_range_support = True
25
 
26
 
26
 # search-url
27
 # search-url
27
 base_url = 'https://www.bing.com/'
28
 base_url = 'https://www.bing.com/'
28
 search_string = 'news/search?{query}&first={offset}&format=RSS'
29
 search_string = 'news/search?{query}&first={offset}&format=RSS'
30
+search_string_with_time = 'news/search?{query}&first={offset}&qft=interval%3d"{interval}"&format=RSS'
31
+time_range_dict = {'day': '7',
32
+                   'week': '8',
33
+                   'month': '9'}
29
 
34
 
30
 
35
 
31
 # remove click
36
 # remove click
46
     return url_string
51
     return url_string
47
 
52
 
48
 
53
 
54
+def _get_url(query, language, offset, time_range):
55
+    if time_range in time_range_dict:
56
+        search_path = search_string_with_time.format(
57
+            query=urlencode({'q': query, 'setmkt': language}),
58
+            offset=offset,
59
+            interval=time_range_dict[time_range])
60
+    else:
61
+        search_path = search_string.format(
62
+            query=urlencode({'q': query, 'setmkt': language}),
63
+            offset=offset)
64
+    return base_url + search_path
65
+
66
+
49
 # do search-request
67
 # do search-request
50
 def request(query, params):
68
 def request(query, params):
51
     offset = (params['pageno'] - 1) * 10 + 1
69
     offset = (params['pageno'] - 1) * 10 + 1
55
     else:
73
     else:
56
         language = params['language'].replace('_', '-')
74
         language = params['language'].replace('_', '-')
57
 
75
 
58
-    search_path = search_string.format(
59
-        query=urlencode({'q': query, 'setmkt': language}),
60
-        offset=offset)
61
-
62
-    params['url'] = base_url + search_path
76
+    params['url'] = _get_url(query, language, offset, params['time_range'])
63
 
77
 
64
     return params
78
     return params
65
 
79
 

+ 1
- 0
tests/unit/engines/test_bing_news.py 查看文件

12
         dicto = defaultdict(dict)
12
         dicto = defaultdict(dict)
13
         dicto['pageno'] = 1
13
         dicto['pageno'] = 1
14
         dicto['language'] = 'fr_FR'
14
         dicto['language'] = 'fr_FR'
15
+        dicto['time_range'] = ''
15
         params = bing_news.request(query, dicto)
16
         params = bing_news.request(query, dicto)
16
         self.assertIn('url', params)
17
         self.assertIn('url', params)
17
         self.assertIn(query, params['url'])
18
         self.assertIn(query, params['url'])