mirror of
https://github.com/searxng/searxng.git
synced 2024-11-26 21:01:01 +00:00
commit
67df3c516f
10 changed files with 75 additions and 3 deletions
|
@ -21,12 +21,18 @@ 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 +49,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
|
||||
|
||||
|
|
|
@ -14,11 +14,17 @@ 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 +37,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
|
||||
|
||||
|
||||
|
|
|
@ -15,18 +15,25 @@ from json import loads
|
|||
# engine dependent config
|
||||
categories = ['images']
|
||||
paging = True
|
||||
safesearch = True
|
||||
|
||||
# search-url
|
||||
url = 'https://ajax.googleapis.com/'
|
||||
search_url = url + 'ajax/services/search/images?v=1.0&start={offset}&rsz=large&safe=off&filter=off&{query}'
|
||||
search_url = url + 'ajax/services/search/images?v=1.0&start={offset}&rsz=large&safe={safesearch}&filter=off&{query}'
|
||||
|
||||
|
||||
# do search-request
|
||||
def request(query, params):
|
||||
offset = (params['pageno'] - 1) * 8
|
||||
|
||||
if params['safesearch'] == 0:
|
||||
safesearch = 'off'
|
||||
else:
|
||||
safesearch = 'on'
|
||||
|
||||
params['url'] = search_url.format(query=urlencode({'q': query}),
|
||||
offset=offset)
|
||||
offset=offset,
|
||||
safesearch=safesearch)
|
||||
|
||||
return params
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -59,6 +59,16 @@
|
|||
</select>
|
||||
</p>
|
||||
</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>
|
||||
<legend>{{ _('Themes') }}</legend>
|
||||
<p>
|
||||
|
|
|
@ -60,6 +60,16 @@
|
|||
</select>
|
||||
</p>
|
||||
</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>
|
||||
<legend>{{ _('Themes') }}</legend>
|
||||
<p>
|
||||
|
|
|
@ -87,6 +87,17 @@
|
|||
</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>
|
||||
</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">
|
||||
<label class="col-sm-3 col-md-2">{{ _('Themes') }}</label>
|
||||
<div class="col-sm-4 col-md-4">
|
||||
|
|
|
@ -12,6 +12,7 @@ class TestBingImagesEngine(SearxTestCase):
|
|||
dicto = defaultdict(dict)
|
||||
dicto['pageno'] = 1
|
||||
dicto['language'] = 'fr_FR'
|
||||
dicto['safesearch'] = 1
|
||||
params = bing_images.request(query, dicto)
|
||||
self.assertTrue('url' in params)
|
||||
self.assertTrue(query in params['url'])
|
||||
|
|
|
@ -10,6 +10,7 @@ class TestBlekkoImagesEngine(SearxTestCase):
|
|||
query = 'test_query'
|
||||
dicto = defaultdict(dict)
|
||||
dicto['pageno'] = 0
|
||||
dicto['safesearch'] = 1
|
||||
params = blekko_images.request(query, dicto)
|
||||
self.assertTrue('url' in params)
|
||||
self.assertTrue(query in params['url'])
|
||||
|
|
|
@ -267,6 +267,8 @@ def render(template_name, override_theme=None, **kwargs):
|
|||
|
||||
kwargs['method'] = request.cookies.get('method', 'POST')
|
||||
|
||||
kwargs['safesearch'] = request.cookies.get('safesearch', '1')
|
||||
|
||||
# override url_for function in templates
|
||||
kwargs['url_for'] = url_for_theme
|
||||
|
||||
|
@ -471,6 +473,8 @@ def preferences():
|
|||
locale = None
|
||||
autocomplete = ''
|
||||
method = 'POST'
|
||||
safesearch = '1'
|
||||
|
||||
for pd_name, pd in request.form.items():
|
||||
if pd_name.startswith('category_'):
|
||||
category = pd_name[9:]
|
||||
|
@ -489,6 +493,8 @@ def preferences():
|
|||
lang = pd
|
||||
elif pd_name == 'method':
|
||||
method = pd
|
||||
elif pd_name == 'safesearch':
|
||||
safesearch = pd
|
||||
elif pd_name.startswith('engine_'):
|
||||
if pd_name.find('__') > -1:
|
||||
engine_name, category = pd_name.replace('engine_', '', 1).split('__', 1)
|
||||
|
@ -530,6 +536,8 @@ def preferences():
|
|||
|
||||
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('theme', theme, max_age=cookie_max_age)
|
||||
|
|
Loading…
Reference in a new issue