Browse Source

add time range search for flickr

Noémi Ványi 8 years ago
parent
commit
1490d6bc93
2 changed files with 15 additions and 3 deletions
  1. 14 3
      searx/engines/flickr_noapi.py
  2. 1 0
      tests/unit/engines/test_flickr_noapi.py

+ 14 - 3
searx/engines/flickr_noapi.py

@@ -14,6 +14,7 @@
 
 from urllib import urlencode
 from json import loads
+from time import time
 import re
 from searx.engines import logger
 
@@ -24,21 +25,31 @@ categories = ['images']
 
 url = 'https://www.flickr.com/'
 search_url = url + 'search?{query}&page={page}'
+time_range_url = '&min_upload_date={start}&max_upload_date={end}'
 photo_url = 'https://www.flickr.com/photos/{userid}/{photoid}'
 regex = re.compile(r"\"search-photos-lite-models\",\"photos\":(.*}),\"totalItems\":", re.DOTALL)
 image_sizes = ('o', 'k', 'h', 'b', 'c', 'z', 'n', 'm', 't', 'q', 's')
 
 paging = True
+time_range_support = True
+time_range_dict = {'day': 60 * 60 * 24,
+                   'week': 60 * 60 * 24 * 7,
+                   'month': 60 * 60 * 24 * 7 * 4}
 
 
 def build_flickr_url(user_id, photo_id):
     return photo_url.format(userid=user_id, photoid=photo_id)
 
 
-def request(query, params):
-    params['url'] = search_url.format(query=urlencode({'text': query}),
-                                      page=params['pageno'])
+def _get_time_range_url(time_range):
+    if time_range in time_range_dict:
+        return time_range_url.format(start=time(), end=str(int(time()) - time_range_dict[time_range]))
+    return ''
+
 
+def request(query, params):
+    params['url'] = (search_url.format(query=urlencode({'text': query}), page=params['pageno'])
+                     + _get_time_range_url(params['time_range']))
     return params
 
 

+ 1 - 0
tests/unit/engines/test_flickr_noapi.py

@@ -15,6 +15,7 @@ class TestFlickrNoapiEngine(SearxTestCase):
         query = 'test_query'
         dicto = defaultdict(dict)
         dicto['pageno'] = 1
+        dicto['time_range'] = ''
         params = flickr_noapi.request(query, dicto)
         self.assertIn('url', params)
         self.assertIn(query, params['url'])