From e7de9674b14c2ff06fac009274742819d6468138 Mon Sep 17 00:00:00 2001
From: Thomas Pointhuber
Date: Sun, 8 Feb 2015 21:53:37 +0100
Subject: [PATCH] [enh] add safesearch functionality
2 = strict
1 = moderate
0 = none
---
searx/engines/bing_images.py | 8 +++++++-
searx/engines/blekko_images.py | 11 +++++++++++
searx/search.py | 5 +++++
searx/templates/courgette/preferences.html | 10 ++++++++++
searx/templates/default/preferences.html | 10 ++++++++++
searx/templates/oscar/preferences.html | 11 +++++++++++
searx/webapp.py | 12 ++++++++++++
7 files changed, 66 insertions(+), 1 deletion(-)
diff --git a/searx/engines/bing_images.py b/searx/engines/bing_images.py
index 9d1c22f5a..4798d9f30 100644
--- a/searx/engines/bing_images.py
+++ b/searx/engines/bing_images.py
@@ -21,12 +21,17 @@ import re
# engine dependent config
categories = ['images']
paging = True
+safesearch = True
# search-url
base_url = 'https://www.bing.com/'
search_string = 'images/search?{query}&count=10&first={offset}'
thumb_url = "http://ts1.mm.bing.net/th?id={ihk}"
+# safesearch definitions
+safesearch_types = {2: 'STRICT',
+ 1: 'DEMOTE',
+ 0: 'OFF'}
# do search-request
def request(query, params):
@@ -43,7 +48,8 @@ def request(query, params):
offset=offset)
params['cookies']['SRCHHPGUSR'] = \
- 'NEWWND=0&NRSLT=-1&SRCHLANG=' + language.split('-')[0]
+ 'NEWWND=0&NRSLT=-1&SRCHLANG=' + language.split('-')[0] +\
+ '&ADLT=' + safesearch_types.get(params['safesearch'], 'DEMOTE')
params['url'] = base_url + search_path
diff --git a/searx/engines/blekko_images.py b/searx/engines/blekko_images.py
index 2bae9c35e..4fbb9b30f 100644
--- a/searx/engines/blekko_images.py
+++ b/searx/engines/blekko_images.py
@@ -14,11 +14,16 @@ from urllib import urlencode
# engine dependent config
categories = ['images']
paging = True
+safesearch = True
# search-url
base_url = 'https://blekko.com'
search_url = '/api/images?{query}&c={c}'
+# safesearch definitions
+safesearch_types = {2: '1',
+ 1: '',
+ 0: '0'}
# do search-request
def request(query, params):
@@ -31,6 +36,12 @@ def request(query, params):
if params['pageno'] != 1:
params['url'] += '&page={pageno}'.format(pageno=(params['pageno']-1))
+ # let Blekko know we wan't have profiling
+ params['cookies']['tag_lesslogging'] = '1'
+
+ # parse safesearch argument
+ params['cookies']['safesearch'] = safesearch_types.get(params['safesearch'], '')
+
return params
diff --git a/searx/search.py b/searx/search.py
index 1b16ee02f..79a8ae0a9 100644
--- a/searx/search.py
+++ b/searx/search.py
@@ -457,6 +457,11 @@ class Search(object):
request_params['started'] = time()
request_params['pageno'] = self.pageno
request_params['language'] = self.lang
+ try:
+ # 0 = None, 1 = Moderate, 2 = Strict
+ request_params['safesearch'] = int(request.cookies.get('safesearch', 1))
+ except ValueError:
+ request_params['safesearch'] = 1
# update request parameters dependent on
# search-engine (contained in engines folder)
diff --git a/searx/templates/courgette/preferences.html b/searx/templates/courgette/preferences.html
index 198bc7ead..18406672c 100644
--- a/searx/templates/courgette/preferences.html
+++ b/searx/templates/courgette/preferences.html
@@ -59,6 +59,16 @@
+
+