on master help sign in
add year filter to engines with time range support && tests

Following engines does not support "Last year": * Bing News * DeviantArt * DuckDuckGo * Yahoo * YouTube (noapi)

commitb034356825420507c9fb7ee2dc100676a88cf6c7 authorNoémi Ványi <sitbackandwait@gmail.com> dateSun 11 Dec 2016, 16:41 (10 years ago) parentc59c76e
9 files changed+43−2
searx/engines/bing_news.py+3 searx/engines/deviantart.py+3 searx/engines/duckduckgo.py+3 searx/engines/yahoo.py+3 searx/engines/youtube_noapi.py+2−1 tests/unit/engines/test_bing_news.py+7 tests/unit/engines/test_deviantart.py+8−1 tests/unit/engines/test_duckduckgo.py+7 tests/unit/engines/test_yahoo.py+7
searx/engines/bing_news.py+3
@@ -66,6 +66,9 @@ def _get_url(query, language, offset, time_range):
6666
6767# do search-request
6868def request(query, params):
69+ if params['time_range'] and params['time_range'] not in time_range_dict:
70+ return params
71+
6972 offset = (params['pageno'] - 1) * 10 + 1
7073
7174 if params['language'] == 'all':
searx/engines/deviantart.py+3
@@ -34,6 +34,9 @@ time_range_dict = {'day': 11,
3434
3535# do search-request
3636def request(query, params):
37+ if params['time_range'] and params['time_range'] not in time_range_dict:
38+ return params
39+
3740 offset = (params['pageno'] - 1) * 24
3841
3942 params['url'] = search_url.format(offset=offset,
searx/engines/duckduckgo.py+3
@@ -41,6 +41,9 @@ content_xpath = './/a[@class="result__snippet"]'
4141
4242# do search-request
4343def request(query, params):
44+ if params['time_range'] and params['time_range'] not in time_range_dict:
45+ return params
46+
4447 offset = (params['pageno'] - 1) * 30
4548
4649 if params['language'] == 'all':
searx/engines/yahoo.py+3
@@ -77,6 +77,9 @@ def _get_language(params):
7777
7878# do search-request
7979def request(query, params):
80+ if params['time_range'] and params['time_range'] not in time_range_dict:
81+ return params
82+
8083 offset = (params['pageno'] - 1) * 10 + 1
8184 language = _get_language(params)
8285
searx/engines/youtube_noapi.py+2−1
@@ -25,7 +25,8 @@ search_url = base_url + '?search_query={query}&page={page}'
2525time_range_url = '&sp=EgII{time_range}%253D%253D'
2626time_range_dict = {'day': 'Ag',
2727 'week': 'Aw',
28− 'month': 'BA'}
28+ 'month': 'BA',
29+ 'year': 'BQ'}
2930
3031embedded_url = '<iframe width="540" height="304" ' +\
3132 'data-src="//www.youtube-nocookie.com/embed/{videoid}" ' +\
tests/unit/engines/test_bing_news.py+7
@@ -23,6 +23,13 @@ class TestBingNewsEngine(SearxTestCase):
2323 params = bing_news.request(query, dicto)
2424 self.assertIn('en', params['url'])
2525
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+
2633 def test_response(self):
2734 self.assertRaises(AttributeError, bing_news.response, None)
2835 self.assertRaises(AttributeError, bing_news.response, [])
tests/unit/engines/test_deviantart.py+8−1
@@ -7,8 +7,8 @@ from searx.testing import SearxTestCase
77class TestDeviantartEngine(SearxTestCase):
88
99 def test_request(self):
10− query = 'test_query'
1110 dicto = defaultdict(dict)
11+ query = 'test_query'
1212 dicto['pageno'] = 0
1313 dicto['time_range'] = ''
1414 params = deviantart.request(query, dicto)
@@ -16,6 +16,13 @@ class TestDeviantartEngine(SearxTestCase):
1616 self.assertTrue(query in params['url'])
1717 self.assertTrue('deviantart.com' in params['url'])
1818
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+
1926 def test_response(self):
2027 self.assertRaises(AttributeError, deviantart.response, None)
2128 self.assertRaises(AttributeError, deviantart.response, [])
tests/unit/engines/test_duckduckgo.py+7
@@ -19,6 +19,13 @@ class TestDuckduckgoEngine(SearxTestCase):
1919 self.assertIn('duckduckgo.com', params['url'])
2020 self.assertIn('ch-de', params['url'])
2121
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+
2229 def test_response(self):
2330 self.assertRaises(AttributeError, duckduckgo.response, None)
2431 self.assertRaises(AttributeError, duckduckgo.response, [])
tests/unit/engines/test_yahoo.py+7
@@ -46,6 +46,13 @@ class TestYahooEngine(SearxTestCase):
4646 self.assertIn('en', params['cookies']['sB'])
4747 self.assertIn('en', params['url'])
4848
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+
4956 def test_response(self):
5057 self.assertRaises(AttributeError, yahoo.response, None)
5158 self.assertRaises(AttributeError, yahoo.response, [])