on master help sign in
add year filter to engines with time range support && tests
b034356Noémi Ványi
searx/engines/bing_news.py+3
@@ -66,6 +66,9 @@ def _get_url(query, language, offset, time_range):
66
66
67# do search-request
67# do search-request
68def request(query, params):
68def request(query, params):
69+ if params['time_range'] and params['time_range'] not in time_range_dict:
70+ return params
71+
69 offset = (params['pageno'] - 1) * 10 + 1
72 offset = (params['pageno'] - 1) * 10 + 1
70
73
71 if params['language'] == 'all':
74 if params['language'] == 'all':
searx/engines/deviantart.py+3
@@ -34,6 +34,9 @@ time_range_dict = {'day': 11,
34
34
35# do search-request
35# do search-request
36def request(query, params):
36def request(query, params):
37+ if params['time_range'] and params['time_range'] not in time_range_dict:
38+ return params
39+
37 offset = (params['pageno'] - 1) * 24
40 offset = (params['pageno'] - 1) * 24
38
41
39 params['url'] = search_url.format(offset=offset,
42 params['url'] = search_url.format(offset=offset,
searx/engines/duckduckgo.py+3
@@ -41,6 +41,9 @@ content_xpath = './/a[@class="result__snippet"]'
41
41
42# do search-request
42# do search-request
43def request(query, params):
43def request(query, params):
44+ if params['time_range'] and params['time_range'] not in time_range_dict:
45+ return params
46+
44 offset = (params['pageno'] - 1) * 30
47 offset = (params['pageno'] - 1) * 30
45
48
46 if params['language'] == 'all':
49 if params['language'] == 'all':
searx/engines/yahoo.py+3
@@ -77,6 +77,9 @@ def _get_language(params):
77
77
78# do search-request
78# do search-request
79def request(query, params):
79def request(query, params):
80+ if params['time_range'] and params['time_range'] not in time_range_dict:
81+ return params
82+
80 offset = (params['pageno'] - 1) * 10 + 1
83 offset = (params['pageno'] - 1) * 10 + 1
81 language = _get_language(params)
84 language = _get_language(params)
82
85
searx/engines/youtube_noapi.py+2−1
@@ -25,7 +25,8 @@ search_url = base_url + '?search_query={query}&page={page}'
25time_range_url = '&sp=EgII{time_range}%253D%253D'
25time_range_url = '&sp=EgII{time_range}%253D%253D'
26time_range_dict = {'day': 'Ag',
26time_range_dict = {'day': 'Ag',
27 'week': 'Aw',
27 'week': 'Aw',
28− 'month': 'BA'}
28+ 'month': 'BA',
29+ 'year': 'BQ'}
29
30
30embedded_url = '<iframe width="540" height="304" ' +\
31embedded_url = '<iframe width="540" height="304" ' +\
31 'data-src="//www.youtube-nocookie.com/embed/{videoid}" ' +\
32 'data-src="//www.youtube-nocookie.com/embed/{videoid}" ' +\
tests/unit/engines/test_bing_news.py+7
@@ -23,6 +23,13 @@ class TestBingNewsEngine(SearxTestCase):
23 params = bing_news.request(query, dicto)
23 params = bing_news.request(query, dicto)
24 self.assertIn('en', params['url'])
24 self.assertIn('en', params['url'])
25
25
26+ def test_no_url_in_request_year_time_range(self):
27+ dicto = defaultdict(dict)
28+ query = 'test_query'
29+ dicto['time_range'] = 'year'
30+ params = bing_news.request(query, dicto)
31+ self.assertEqual({}, params['url'])
32+
26 def test_response(self):
33 def test_response(self):
27 self.assertRaises(AttributeError, bing_news.response, None)
34 self.assertRaises(AttributeError, bing_news.response, None)
28 self.assertRaises(AttributeError, bing_news.response, [])
35 self.assertRaises(AttributeError, bing_news.response, [])
tests/unit/engines/test_deviantart.py+8−1
@@ -7,8 +7,8 @@ from searx.testing import SearxTestCase
7class TestDeviantartEngine(SearxTestCase):
7class TestDeviantartEngine(SearxTestCase):
8
8
9 def test_request(self):
9 def test_request(self):
10− query = 'test_query'
11 dicto = defaultdict(dict)
10 dicto = defaultdict(dict)
11+ query = 'test_query'
12 dicto['pageno'] = 0
12 dicto['pageno'] = 0
13 dicto['time_range'] = ''
13 dicto['time_range'] = ''
14 params = deviantart.request(query, dicto)
14 params = deviantart.request(query, dicto)
@@ -16,6 +16,13 @@ class TestDeviantartEngine(SearxTestCase):
16 self.assertTrue(query in params['url'])
16 self.assertTrue(query in params['url'])
17 self.assertTrue('deviantart.com' in params['url'])
17 self.assertTrue('deviantart.com' in params['url'])
18
18
19+ def test_no_url_in_request_year_time_range(self):
20+ dicto = defaultdict(dict)
21+ query = 'test_query'
22+ dicto['time_range'] = 'year'
23+ params = deviantart.request(query, dicto)
24+ self.assertEqual({}, params['url'])
25+
19 def test_response(self):
26 def test_response(self):
20 self.assertRaises(AttributeError, deviantart.response, None)
27 self.assertRaises(AttributeError, deviantart.response, None)
21 self.assertRaises(AttributeError, deviantart.response, [])
28 self.assertRaises(AttributeError, deviantart.response, [])
tests/unit/engines/test_duckduckgo.py+7
@@ -19,6 +19,13 @@ class TestDuckduckgoEngine(SearxTestCase):
19 self.assertIn('duckduckgo.com', params['url'])
19 self.assertIn('duckduckgo.com', params['url'])
20 self.assertIn('ch-de', params['url'])
20 self.assertIn('ch-de', params['url'])
21
21
22+ def test_no_url_in_request_year_time_range(self):
23+ dicto = defaultdict(dict)
24+ query = 'test_query'
25+ dicto['time_range'] = 'year'
26+ params = duckduckgo.request(query, dicto)
27+ self.assertEqual({}, params['url'])
28+
22 def test_response(self):
29 def test_response(self):
23 self.assertRaises(AttributeError, duckduckgo.response, None)
30 self.assertRaises(AttributeError, duckduckgo.response, None)
24 self.assertRaises(AttributeError, duckduckgo.response, [])
31 self.assertRaises(AttributeError, duckduckgo.response, [])
tests/unit/engines/test_yahoo.py+7
@@ -46,6 +46,13 @@ class TestYahooEngine(SearxTestCase):
46 self.assertIn('en', params['cookies']['sB'])
46 self.assertIn('en', params['cookies']['sB'])
47 self.assertIn('en', params['url'])
47 self.assertIn('en', params['url'])
48
48
49+ def test_no_url_in_request_year_time_range(self):
50+ dicto = defaultdict(dict)
51+ query = 'test_query'
52+ dicto['time_range'] = 'year'
53+ params = yahoo.request(query, dicto)
54+ self.assertEqual({}, params['url'])
55+
49 def test_response(self):
56 def test_response(self):
50 self.assertRaises(AttributeError, yahoo.response, None)
57 self.assertRaises(AttributeError, yahoo.response, None)
51 self.assertRaises(AttributeError, yahoo.response, [])
58 self.assertRaises(AttributeError, yahoo.response, [])