forked from zaclys/searxng
[enh] add safesearch functionality
2 = strict 1 = moderate 0 = none
This commit is contained in:
parent
dd4686a388
commit
e7de9674b1
|
@ -21,12 +21,17 @@ import re
|
||||||
# engine dependent config
|
# engine dependent config
|
||||||
categories = ['images']
|
categories = ['images']
|
||||||
paging = True
|
paging = True
|
||||||
|
safesearch = True
|
||||||
|
|
||||||
# search-url
|
# search-url
|
||||||
base_url = 'https://www.bing.com/'
|
base_url = 'https://www.bing.com/'
|
||||||
search_string = 'images/search?{query}&count=10&first={offset}'
|
search_string = 'images/search?{query}&count=10&first={offset}'
|
||||||
thumb_url = "http://ts1.mm.bing.net/th?id={ihk}"
|
thumb_url = "http://ts1.mm.bing.net/th?id={ihk}"
|
||||||
|
|
||||||
|
# safesearch definitions
|
||||||
|
safesearch_types = {2: 'STRICT',
|
||||||
|
1: 'DEMOTE',
|
||||||
|
0: 'OFF'}
|
||||||
|
|
||||||
# do search-request
|
# do search-request
|
||||||
def request(query, params):
|
def request(query, params):
|
||||||
|
@ -43,7 +48,8 @@ def request(query, params):
|
||||||
offset=offset)
|
offset=offset)
|
||||||
|
|
||||||
params['cookies']['SRCHHPGUSR'] = \
|
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
|
params['url'] = base_url + search_path
|
||||||
|
|
||||||
|
|
|
@ -14,11 +14,16 @@ from urllib import urlencode
|
||||||
# engine dependent config
|
# engine dependent config
|
||||||
categories = ['images']
|
categories = ['images']
|
||||||
paging = True
|
paging = True
|
||||||
|
safesearch = True
|
||||||
|
|
||||||
# search-url
|
# search-url
|
||||||
base_url = 'https://blekko.com'
|
base_url = 'https://blekko.com'
|
||||||
search_url = '/api/images?{query}&c={c}'
|
search_url = '/api/images?{query}&c={c}'
|
||||||
|
|
||||||
|
# safesearch definitions
|
||||||
|
safesearch_types = {2: '1',
|
||||||
|
1: '',
|
||||||
|
0: '0'}
|
||||||
|
|
||||||
# do search-request
|
# do search-request
|
||||||
def request(query, params):
|
def request(query, params):
|
||||||
|
@ -31,6 +36,12 @@ def request(query, params):
|
||||||
if params['pageno'] != 1:
|
if params['pageno'] != 1:
|
||||||
params['url'] += '&page={pageno}'.format(pageno=(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
|
return params
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -457,6 +457,11 @@ class Search(object):
|
||||||
request_params['started'] = time()
|
request_params['started'] = time()
|
||||||
request_params['pageno'] = self.pageno
|
request_params['pageno'] = self.pageno
|
||||||
request_params['language'] = self.lang
|
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
|
# update request parameters dependent on
|
||||||
# search-engine (contained in engines folder)
|
# search-engine (contained in engines folder)
|
||||||
|
|
|
@ -59,6 +59,16 @@
|
||||||
</select>
|
</select>
|
||||||
</p>
|
</p>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{ _('SafeSearch') }}</legend>
|
||||||
|
<p>
|
||||||
|
<select name='safesearch'>
|
||||||
|
<option value="2" {% if safesearch == '2' %}selected="selected"{% endif %}>{{ _('Strict') }}</option>
|
||||||
|
<option value="1" {% if safesearch == '1' %}selected="selected"{% endif %}>{{ _('Moderate') }}</option>
|
||||||
|
<option value="0" {% if safesearch == '0' %}selected="selected"{% endif %}>{{ _('None') }}</option>
|
||||||
|
</select>
|
||||||
|
</p>
|
||||||
|
</fieldset>
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{ _('Themes') }}</legend>
|
<legend>{{ _('Themes') }}</legend>
|
||||||
<p>
|
<p>
|
||||||
|
|
|
@ -60,6 +60,16 @@
|
||||||
</select>
|
</select>
|
||||||
</p>
|
</p>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{ _('SafeSearch') }}</legend>
|
||||||
|
<p>
|
||||||
|
<select name='safesearch'>
|
||||||
|
<option value="2" {% if safesearch == '2' %}selected="selected"{% endif %}>{{ _('Strict') }}</option>
|
||||||
|
<option value="1" {% if safesearch == '1' %}selected="selected"{% endif %}>{{ _('Moderate') }}</option>
|
||||||
|
<option value="0" {% if safesearch == '0' %}selected="selected"{% endif %}>{{ _('None') }}</option>
|
||||||
|
</select>
|
||||||
|
</p>
|
||||||
|
</fieldset>
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{ _('Themes') }}</legend>
|
<legend>{{ _('Themes') }}</legend>
|
||||||
<p>
|
<p>
|
||||||
|
|
|
@ -87,6 +87,17 @@
|
||||||
</div>
|
</div>
|
||||||
<span class="col-sm-5 col-md-6 help-block">{{ _('Change how forms are submited, <a href="http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods" rel="external">learn more about request methods</a>') }}</span>
|
<span class="col-sm-5 col-md-6 help-block">{{ _('Change how forms are submited, <a href="http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods" rel="external">learn more about request methods</a>') }}</span>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="row form-group">
|
||||||
|
<label class="col-sm-3 col-md-2">{{ _('SafeSearch') }}</label>
|
||||||
|
<div class="col-sm-4 col-md-4">
|
||||||
|
<select class="form-control" name='safesearch'>
|
||||||
|
<option value="2" {% if safesearch == '2' %}selected="selected"{% endif %}>{{ _('Strict') }}</option>
|
||||||
|
<option value="1" {% if safesearch == '1' %}selected="selected"{% endif %}>{{ _('Moderate') }}</option>
|
||||||
|
<option value="0" {% if safesearch == '0' %}selected="selected"{% endif %}>{{ _('None') }}</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<span class="col-sm-5 col-md-6 help-block">{{ _('Filter explicite content') }}</span>
|
||||||
|
</div>
|
||||||
<div class="row form-group">
|
<div class="row form-group">
|
||||||
<label class="col-sm-3 col-md-2">{{ _('Themes') }}</label>
|
<label class="col-sm-3 col-md-2">{{ _('Themes') }}</label>
|
||||||
<div class="col-sm-4 col-md-4">
|
<div class="col-sm-4 col-md-4">
|
||||||
|
|
|
@ -267,6 +267,8 @@ def render(template_name, override_theme=None, **kwargs):
|
||||||
|
|
||||||
kwargs['method'] = request.cookies.get('method', 'POST')
|
kwargs['method'] = request.cookies.get('method', 'POST')
|
||||||
|
|
||||||
|
kwargs['safesearch'] = request.cookies.get('safesearch', '1')
|
||||||
|
|
||||||
# override url_for function in templates
|
# override url_for function in templates
|
||||||
kwargs['url_for'] = url_for_theme
|
kwargs['url_for'] = url_for_theme
|
||||||
|
|
||||||
|
@ -455,6 +457,10 @@ def preferences():
|
||||||
Settings that are going to be saved as cookies."""
|
Settings that are going to be saved as cookies."""
|
||||||
lang = None
|
lang = None
|
||||||
image_proxy = request.cookies.get('image_proxy', settings['server'].get('image_proxy'))
|
image_proxy = request.cookies.get('image_proxy', settings['server'].get('image_proxy'))
|
||||||
|
try:
|
||||||
|
savesearch = int(request.cookies.get('savesearch', 1))
|
||||||
|
except ValueError:
|
||||||
|
savesearch = 1
|
||||||
|
|
||||||
if request.cookies.get('language')\
|
if request.cookies.get('language')\
|
||||||
and request.cookies['language'] in (x[0] for x in language_codes):
|
and request.cookies['language'] in (x[0] for x in language_codes):
|
||||||
|
@ -471,6 +477,8 @@ def preferences():
|
||||||
locale = None
|
locale = None
|
||||||
autocomplete = ''
|
autocomplete = ''
|
||||||
method = 'POST'
|
method = 'POST'
|
||||||
|
safesearch = '1'
|
||||||
|
|
||||||
for pd_name, pd in request.form.items():
|
for pd_name, pd in request.form.items():
|
||||||
if pd_name.startswith('category_'):
|
if pd_name.startswith('category_'):
|
||||||
category = pd_name[9:]
|
category = pd_name[9:]
|
||||||
|
@ -489,6 +497,8 @@ def preferences():
|
||||||
lang = pd
|
lang = pd
|
||||||
elif pd_name == 'method':
|
elif pd_name == 'method':
|
||||||
method = pd
|
method = pd
|
||||||
|
elif pd_name == 'safesearch':
|
||||||
|
safesearch = pd
|
||||||
elif pd_name.startswith('engine_'):
|
elif pd_name.startswith('engine_'):
|
||||||
if pd_name.find('__') > -1:
|
if pd_name.find('__') > -1:
|
||||||
engine_name, category = pd_name.replace('engine_', '', 1).split('__', 1)
|
engine_name, category = pd_name.replace('engine_', '', 1).split('__', 1)
|
||||||
|
@ -529,6 +539,8 @@ def preferences():
|
||||||
)
|
)
|
||||||
|
|
||||||
resp.set_cookie('method', method, max_age=cookie_max_age)
|
resp.set_cookie('method', method, max_age=cookie_max_age)
|
||||||
|
|
||||||
|
resp.set_cookie('safesearch', safesearch, max_age=cookie_max_age)
|
||||||
|
|
||||||
resp.set_cookie('image_proxy', image_proxy, max_age=cookie_max_age)
|
resp.set_cookie('image_proxy', image_proxy, max_age=cookie_max_age)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue