diff options
| author | asciimoo <asciimoo@gmail.com> | 2013-11-15 18:55:18 +0100 |
|---|---|---|
| committer | asciimoo <asciimoo@gmail.com> | 2013-11-15 18:55:18 +0100 |
| commit | a192438e9a59b14290b8e719fe4d5679a6371a25 (patch) | |
| tree | 7a1c0051208acfab4c2e3e6a6edb472d6707228c /searx/webapp.py | |
| parent | 1297d4109d7a1fd15c9c41f192d74ae6b0b9b179 (diff) | |
[enh] csv output support
Diffstat (limited to 'searx/webapp.py')
| -rw-r--r-- | searx/webapp.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/searx/webapp.py b/searx/webapp.py index 9185f46a3..e4ac03708 100644 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -26,6 +26,8 @@ from flask import Flask, request, render_template, url_for, Response, make_respo from searx.engines import search, categories, engines, get_engines_stats from searx import settings import json +import cStringIO +from searx.utils import UnicodeWriter app = Flask(__name__) @@ -104,6 +106,17 @@ def index(): result['pretty_url'] = result['url'] if request_data.get('format') == 'json': return Response(json.dumps({'query': query, 'results': results}), mimetype='application/json') + elif request_data.get('format') == 'csv': + csv = UnicodeWriter(cStringIO.StringIO()) + if len(results): + keys = results[0].keys() + csv.writerow(keys) + for row in results: + csv.writerow([row[key] for key in keys]) + csv.stream.seek(0) + response = Response(csv.stream.read(), mimetype='application/csv', ) + response.headers.add('Content-Disposition', 'attachment;Filename=searx_-_{0}.csv'.format(query)) + return response template = render('results.html' ,results=results ,q=request_data['q'] |