diff --git a/searx/engines/bing_images.py b/searx/engines/bing_images.py index 417871d6..4dd362cb 100644 --- a/searx/engines/bing_images.py +++ b/searx/engines/bing_images.py @@ -33,7 +33,8 @@ time_range_string = '&qft=+filterui:age-lt{interval}' thumb_url = "https://www.bing.com/th?id={ihk}" time_range_dict = {'day': '1440', 'week': '10080', - 'month': '43200'} + 'month': '43200', + 'year': '525600'} # safesearch definitions safesearch_types = {2: 'STRICT', diff --git a/searx/engines/bing_news.py b/searx/engines/bing_news.py index 906afe66..4e7c3312 100644 --- a/searx/engines/bing_news.py +++ b/searx/engines/bing_news.py @@ -66,6 +66,9 @@ def _get_url(query, language, offset, time_range): # do search-request def request(query, params): + if params['time_range'] and params['time_range'] not in time_range_dict: + return params + offset = (params['pageno'] - 1) * 10 + 1 if params['language'] == 'all': diff --git a/searx/engines/deviantart.py b/searx/engines/deviantart.py index d893fc7f..a24b75b8 100644 --- a/searx/engines/deviantart.py +++ b/searx/engines/deviantart.py @@ -34,6 +34,9 @@ time_range_dict = {'day': 11, # do search-request def request(query, params): + if params['time_range'] and params['time_range'] not in time_range_dict: + return params + offset = (params['pageno'] - 1) * 24 params['url'] = search_url.format(offset=offset, diff --git a/searx/engines/duckduckgo.py b/searx/engines/duckduckgo.py index 2153492e..9959a52e 100644 --- a/searx/engines/duckduckgo.py +++ b/searx/engines/duckduckgo.py @@ -41,6 +41,9 @@ content_xpath = './/a[@class="result__snippet"]' # do search-request def request(query, params): + if params['time_range'] and params['time_range'] not in time_range_dict: + return params + offset = (params['pageno'] - 1) * 30 if params['language'] == 'all': diff --git a/searx/engines/flickr_noapi.py b/searx/engines/flickr_noapi.py index 68be139b..3c0ec7b7 100644 --- a/searx/engines/flickr_noapi.py +++ b/searx/engines/flickr_noapi.py @@ -34,7 +34,8 @@ paging = True time_range_support = True time_range_dict = {'day': 60 * 60 * 24, '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): diff --git a/searx/engines/google.py b/searx/engines/google.py index 0e2d522f..a02b6940 100644 --- a/searx/engines/google.py +++ b/searx/engines/google.py @@ -95,7 +95,8 @@ search_url = ('https://{hostname}' + time_range_search = "&tbs=qdr:{range}" time_range_dict = {'day': 'd', 'week': 'w', - 'month': 'm'} + 'month': 'm', + 'year': 'y'} # other URLs map_hostname_start = 'maps.google.' diff --git a/searx/engines/google_images.py b/searx/engines/google_images.py index 77bdc13b..9a3c71c7 100644 --- a/searx/engines/google_images.py +++ b/searx/engines/google_images.py @@ -10,10 +10,12 @@ @parse url, title, img_src """ +from datetime import date, timedelta from urllib import urlencode from json import loads from lxml import html + # engine dependent config categories = ['images'] paging = True @@ -29,6 +31,7 @@ search_url = 'https://www.google.com/search'\ '&yv=2'\ '&{search_options}' time_range_attr = "qdr:{range}" +time_range_custom_attr = "cdr:1,cd_min:{start},cd_max{end}" time_range_dict = {'day': 'd', 'week': 'w', 'month': 'm'} @@ -36,7 +39,6 @@ time_range_dict = {'day': 'd', # do search-request def request(query, params): - search_options = { 'ijn': params['pageno'] - 1, 'start': (params['pageno'] - 1) * number_of_results @@ -44,6 +46,12 @@ def request(query, params): if params['time_range'] in time_range_dict: 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']: search_options['safe'] = 'on' diff --git a/searx/engines/google_news.py b/searx/engines/google_news.py index ede61561..37253c6a 100644 --- a/searx/engines/google_news.py +++ b/searx/engines/google_news.py @@ -29,7 +29,8 @@ search_url = 'https://www.google.com/search'\ time_range_attr = "qdr:{range}" time_range_dict = {'day': 'd', 'week': 'w', - 'month': 'm'} + 'month': 'm', + 'year': 'y'} # do search-request diff --git a/searx/engines/yahoo.py b/searx/engines/yahoo.py index 8e24a283..2bb34b83 100644 --- a/searx/engines/yahoo.py +++ b/searx/engines/yahoo.py @@ -77,6 +77,9 @@ def _get_language(params): # do search-request def request(query, params): + if params['time_range'] and params['time_range'] not in time_range_dict: + return params + offset = (params['pageno'] - 1) * 10 + 1 language = _get_language(params) diff --git a/searx/engines/youtube_noapi.py b/searx/engines/youtube_noapi.py index b3359446..9b7ca64c 100644 --- a/searx/engines/youtube_noapi.py +++ b/searx/engines/youtube_noapi.py @@ -25,7 +25,8 @@ search_url = base_url + '?search_query={query}&page={page}' time_range_url = '&sp=EgII{time_range}%253D%253D' time_range_dict = {'day': 'Ag', 'week': 'Aw', - 'month': 'BA'} + 'month': 'BA', + 'year': 'BQ'} embedded_url = '