@@ -26,6 +26,8 @@ from flask import Flask, request, render_template, url_for, Response, make_respo
26from searx.engines import search, categories, engines, get_engines_stats
26from searx.engines import search, categories, engines, get_engines_stats
27from searx import settings
27from searx import settings
28import json
28import json
30+from searx.utils import UnicodeWriter
31app = Flask(__name__)
33app = Flask(__name__)
@@ -104,6 +106,17 @@ def index():
104 result['pretty_url'] = result['url']
106 result['pretty_url'] = result['url']
105 if request_data.get('format') == 'json':
107 if request_data.get('format') == 'json':
106 return Response(json.dumps({'query': query, 'results': results}), mimetype='application/json')
108 return Response(json.dumps({'query': query, 'results': results}), mimetype='application/json')
109+ elif request_data.get('format') == 'csv':
110+ csv = UnicodeWriter(cStringIO.StringIO())
112+ keys = results[0].keys()
115+ csv.writerow([row[key] for key in keys])
117+ response = Response(csv.stream.read(), mimetype='application/csv', )
118+ response.headers.add('Content-Disposition', 'attachment;Filename=searx_-_{0}.csv'.format(query))
107 template = render('results.html'
120 template = render('results.html'
108 ,results=results
121 ,results=results
109 ,q=request_data['q']
122 ,q=request_data['q']