|
|
@@ -22,7 +22,7 @@ if __name__ == "__main__":
|
|
22
|
22
|
from sys import path
|
|
23
|
23
|
path.append(os.path.realpath(os.path.dirname(os.path.realpath(__file__))+'/../'))
|
|
24
|
24
|
|
|
25
|
|
-from flask import Flask, request, render_template, url_for, Response, make_response
|
|
|
25
|
+from flask import Flask, request, render_template, url_for, Response, make_response, redirect
|
|
26
|
26
|
from searx.engines import search, categories, engines, get_engines_stats
|
|
27
|
27
|
from searx import settings
|
|
28
|
28
|
import json
|
|
|
@@ -124,29 +124,46 @@ def index():
|
|
124
|
124
|
response.headers.add('Content-Disposition', 'attachment;Filename=searx_-_{0}.csv'.format('_'.join(query.split())))
|
|
125
|
125
|
return response
|
|
126
|
126
|
|
|
127
|
|
- template = render('results.html'
|
|
128
|
|
- ,results=results
|
|
129
|
|
- ,q=request_data['q']
|
|
130
|
|
- ,selected_categories=selected_categories
|
|
131
|
|
- ,number_of_results=len(results)
|
|
132
|
|
- ,suggestions=suggestions
|
|
133
|
|
- )
|
|
134
|
|
- resp = make_response(template)
|
|
135
|
|
- resp.set_cookie('categories', ','.join(selected_categories))
|
|
|
127
|
+ return render('results.html'
|
|
|
128
|
+ ,results=results
|
|
|
129
|
+ ,q=request_data['q']
|
|
|
130
|
+ ,selected_categories=selected_categories
|
|
|
131
|
+ ,number_of_results=len(results)
|
|
|
132
|
+ ,suggestions=suggestions
|
|
|
133
|
+ )
|
|
136
|
134
|
|
|
137
|
|
- return resp
|
|
138
|
135
|
|
|
139
|
136
|
@app.route('/about', methods=['GET'])
|
|
140
|
137
|
def about():
|
|
141
|
138
|
global categories
|
|
142
|
139
|
return render('about.html', categs=categories.items())
|
|
143
|
140
|
|
|
|
141
|
+
|
|
|
142
|
+@app.route('/preferences', methods=['GET', 'POST'])
|
|
|
143
|
+def preferences():
|
|
|
144
|
+
|
|
|
145
|
+ if request.method=='POST':
|
|
|
146
|
+ selected_categories = []
|
|
|
147
|
+ for pd_name,pd in request.form.items():
|
|
|
148
|
+ if pd_name.startswith('category_'):
|
|
|
149
|
+ category = pd_name[9:]
|
|
|
150
|
+ if not category in categories:
|
|
|
151
|
+ continue
|
|
|
152
|
+ selected_categories.append(category)
|
|
|
153
|
+ if selected_categories:
|
|
|
154
|
+ resp = make_response(redirect('/'))
|
|
|
155
|
+ resp.set_cookie('categories', ','.join(selected_categories))
|
|
|
156
|
+ return resp
|
|
|
157
|
+ return render('preferences.html')
|
|
|
158
|
+
|
|
|
159
|
+
|
|
144
|
160
|
@app.route('/stats', methods=['GET'])
|
|
145
|
161
|
def stats():
|
|
146
|
162
|
global categories
|
|
147
|
163
|
stats = get_engines_stats()
|
|
148
|
164
|
return render('stats.html', stats=stats)
|
|
149
|
165
|
|
|
|
166
|
+
|
|
150
|
167
|
@app.route('/robots.txt', methods=['GET'])
|
|
151
|
168
|
def robots():
|
|
152
|
169
|
return Response("""User-agent: *
|
|
|
@@ -155,6 +172,7 @@ Allow: /about
|
|
155
|
172
|
Disallow: /stats
|
|
156
|
173
|
""", mimetype='text/plain')
|
|
157
|
174
|
|
|
|
175
|
+
|
|
158
|
176
|
@app.route('/opensearch.xml', methods=['GET'])
|
|
159
|
177
|
def opensearch():
|
|
160
|
178
|
global opensearch_xml
|
|
|
@@ -165,8 +183,8 @@ def opensearch():
|
|
165
|
183
|
method = 'get'
|
|
166
|
184
|
if request.is_secure:
|
|
167
|
185
|
scheme = 'https'
|
|
168
|
|
- if settings.hostname:
|
|
169
|
|
- hostname = '{0}://{1}/'.format(scheme,settings.hostname)
|
|
|
186
|
+ if settings.base_url:
|
|
|
187
|
+ hostname = settings.base_url
|
|
170
|
188
|
else:
|
|
171
|
189
|
hostname = url_for('index', _external=True, _scheme=scheme)
|
|
172
|
190
|
ret = opensearch_xml.format(method=method, host=hostname)
|