add year to time range to engines which support "Last year"

Engines:
 * Bing images
 * Flickr (noapi)
 * Google
 * Google Images
 * Google News
dependabot/pip/master/sphinx-6.1.3
Noémi Ványi 8 years ago
parent 2fc1091b7f
commit c59c76e6ee

@ -33,7 +33,8 @@ time_range_string = '&qft=+filterui:age-lt{interval}'
thumb_url = "https://www.bing.com/th?id={ihk}" thumb_url = "https://www.bing.com/th?id={ihk}"
time_range_dict = {'day': '1440', time_range_dict = {'day': '1440',
'week': '10080', 'week': '10080',
'month': '43200'} 'month': '43200',
'year': '525600'}
# safesearch definitions # safesearch definitions
safesearch_types = {2: 'STRICT', safesearch_types = {2: 'STRICT',

@ -34,7 +34,8 @@ paging = True
time_range_support = True time_range_support = True
time_range_dict = {'day': 60 * 60 * 24, time_range_dict = {'day': 60 * 60 * 24,
'week': 60 * 60 * 24 * 7, 'week': 60 * 60 * 24 * 7,
'month': 60 * 60 * 24 * 7 * 4} 'month': 60 * 60 * 24 * 7 * 4,
'year': 60 * 60 * 24 * 7 * 52}
def build_flickr_url(user_id, photo_id): def build_flickr_url(user_id, photo_id):

@ -95,7 +95,8 @@ search_url = ('https://{hostname}' +
time_range_search = "&tbs=qdr:{range}" time_range_search = "&tbs=qdr:{range}"
time_range_dict = {'day': 'd', time_range_dict = {'day': 'd',
'week': 'w', 'week': 'w',
'month': 'm'} 'month': 'm',
'year': 'y'}
# other URLs # other URLs
map_hostname_start = 'maps.google.' map_hostname_start = 'maps.google.'

@ -10,10 +10,12 @@
@parse url, title, img_src @parse url, title, img_src
""" """
from datetime import date, timedelta
from urllib import urlencode from urllib import urlencode
from json import loads from json import loads
from lxml import html from lxml import html
# engine dependent config # engine dependent config
categories = ['images'] categories = ['images']
paging = True paging = True
@ -29,6 +31,7 @@ search_url = 'https://www.google.com/search'\
'&yv=2'\ '&yv=2'\
'&{search_options}' '&{search_options}'
time_range_attr = "qdr:{range}" time_range_attr = "qdr:{range}"
time_range_custom_attr = "cdr:1,cd_min:{start},cd_max{end}"
time_range_dict = {'day': 'd', time_range_dict = {'day': 'd',
'week': 'w', 'week': 'w',
'month': 'm'} 'month': 'm'}
@ -36,7 +39,6 @@ time_range_dict = {'day': 'd',
# do search-request # do search-request
def request(query, params): def request(query, params):
search_options = { search_options = {
'ijn': params['pageno'] - 1, 'ijn': params['pageno'] - 1,
'start': (params['pageno'] - 1) * number_of_results 'start': (params['pageno'] - 1) * number_of_results
@ -44,6 +46,12 @@ def request(query, params):
if params['time_range'] in time_range_dict: if params['time_range'] in time_range_dict:
search_options['tbs'] = time_range_attr.format(range=time_range_dict[params['time_range']]) search_options['tbs'] = time_range_attr.format(range=time_range_dict[params['time_range']])
elif params['time_range'] == 'year':
now = date.today()
then = now - timedelta(days=365)
start = then.strftime('%m/%d/%Y')
end = now.strftime('%m/%d/%Y')
search_options['tbs'] = time_range_custom_attr.format(start=start, end=end)
if safesearch and params['safesearch']: if safesearch and params['safesearch']:
search_options['safe'] = 'on' search_options['safe'] = 'on'

@ -29,7 +29,8 @@ search_url = 'https://www.google.com/search'\
time_range_attr = "qdr:{range}" time_range_attr = "qdr:{range}"
time_range_dict = {'day': 'd', time_range_dict = {'day': 'd',
'week': 'w', 'week': 'w',
'month': 'm'} 'month': 'm',
'year': 'y'}
# do search-request # do search-request

@ -17,6 +17,25 @@ class TestYoutubeNoAPIEngine(SearxTestCase):
self.assertIn(query, params['url']) self.assertIn(query, params['url'])
self.assertIn('youtube.com', params['url']) self.assertIn('youtube.com', params['url'])
def test_time_range_search(self):
dicto = defaultdict(dict)
query = 'test_query'
dicto['time_range'] = 'year'
params = youtube_noapi.request(query, dicto)
self.assertIn('&sp=EgIIBQ%253D%253D', params['url'])
dicto['time_range'] = 'month'
params = youtube_noapi.request(query, dicto)
self.assertIn('&sp=EgIIBA%253D%253D', params['url'])
dicto['time_range'] = 'week'
params = youtube_noapi.request(query, dicto)
self.assertIn('&sp=EgIIAw%253D%253D', params['url'])
dicto['time_range'] = 'day'
params = youtube_noapi.request(query, dicto)
self.assertIn('&sp=EgIIAg%253D%253D', params['url'])
def test_response(self): def test_response(self):
self.assertRaises(AttributeError, youtube_noapi.response, None) self.assertRaises(AttributeError, youtube_noapi.response, None)
self.assertRaises(AttributeError, youtube_noapi.response, []) self.assertRaises(AttributeError, youtube_noapi.response, [])

Loading…
Cancel
Save