Kaynağa Gözat

add time range search for bing news

Noémi Ványi 8 yıl önce
ebeveyn
işleme
f70d405202

+ 19
- 5
searx/engines/bing_news.py Dosyayı Görüntüle

@@ -22,10 +22,15 @@ from searx.utils import list_get
22 22
 categories = ['news']
23 23
 paging = True
24 24
 language_support = True
25
+time_range_support = True
25 26
 
26 27
 # search-url
27 28
 base_url = 'https://www.bing.com/'
28 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 36
 # remove click
@@ -46,6 +51,19 @@ def image_url_cleanup(url_string):
46 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 67
 # do search-request
50 68
 def request(query, params):
51 69
     offset = (params['pageno'] - 1) * 10 + 1
@@ -55,11 +73,7 @@ def request(query, params):
55 73
     else:
56 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 78
     return params
65 79
 

+ 1
- 0
tests/unit/engines/test_bing_news.py Dosyayı Görüntüle

@@ -12,6 +12,7 @@ class TestBingNewsEngine(SearxTestCase):
12 12
         dicto = defaultdict(dict)
13 13
         dicto['pageno'] = 1
14 14
         dicto['language'] = 'fr_FR'
15
+        dicto['time_range'] = ''
15 16
         params = bing_news.request(query, dicto)
16 17
         self.assertIn('url', params)
17 18
         self.assertIn(query, params['url'])