on master help sign in
add time range search for youtube noapi
d2e0cbaNoémi Ványi
searx/engines/youtube_noapi.py+7
@@ -17,10 +17,15 @@ from searx.utils import list_get
17categories = ['videos', 'music']
17categories = ['videos', 'music']
18paging = True
18paging = True
19language_support = False
19language_support = False
20+time_range_support = True
20
21
21# search-url
22# search-url
22base_url = 'https://www.youtube.com/results'
23base_url = 'https://www.youtube.com/results'
23search_url = base_url + '?search_query={query}&page={page}'
24search_url = base_url + '?search_query={query}&page={page}'
25+time_range_url = '&sp=EgII{time_range}%253D%253D'
26+time_range_dict = {'day': 'Ag',
27+ 'week': 'Aw',
28+ 'month': 'BA'}
24
29
25embedded_url = '<iframe width="540" height="304" ' +\
30embedded_url = '<iframe width="540" height="304" ' +\
26 'data-src="//www.youtube-nocookie.com/embed/{videoid}" ' +\
31 'data-src="//www.youtube-nocookie.com/embed/{videoid}" ' +\
@@ -47,6 +52,8 @@ def extract_text_from_dom(result, xpath):
47def request(query, params):
52def request(query, params):
48 params['url'] = search_url.format(query=quote_plus(query),
53 params['url'] = search_url.format(query=quote_plus(query),
49 page=params['pageno'])
54 page=params['pageno'])
55+ if params['time_range'] in time_range_dict:
56+ params['url'] += time_range_url.format(time_range=time_range_dict[params['time_range']])
50
57
51 return params
58 return params
52
59
tests/unit/engines/test_youtube_noapi.py+1
@@ -11,6 +11,7 @@ class TestYoutubeNoAPIEngine(SearxTestCase):
11 query = 'test_query'
11 query = 'test_query'
12 dicto = defaultdict(dict)
12 dicto = defaultdict(dict)
13 dicto['pageno'] = 0
13 dicto['pageno'] = 0
14+ dicto['time_range'] = ''
14 params = youtube_noapi.request(query, dicto)
15 params = youtube_noapi.request(query, dicto)
15 self.assertIn('url', params)
16 self.assertIn('url', params)
16 self.assertIn(query, params['url'])
17 self.assertIn(query, params['url'])