From 543acf9ba40c1782c6163c6c7efcc96ab9be06cc Mon Sep 17 00:00:00 2001 From: Gnome Ann <> Date: Wed, 1 Sep 2021 13:46:37 -0400 Subject: [PATCH] Also allow downloading stories as plaintext --- aiserver.py | 25 ++++++++++++++++++++++--- static/application.js | 5 +++++ templates/index.html | 3 ++- 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/aiserver.py b/aiserver.py index 4f01c800..fafe0898 100644 --- a/aiserver.py +++ b/aiserver.py @@ -370,7 +370,7 @@ log.setLevel(logging.ERROR) # Start flask & SocketIO print("{0}Initializing Flask... {1}".format(colors.PURPLE, colors.END), end="") -from flask import Flask, render_template, Response +from flask import Flask, render_template, Response, request from flask_socketio import SocketIO, emit app = Flask(__name__) app.config['SECRET KEY'] = 'secret!' @@ -501,6 +501,26 @@ def index(): return render_template('index.html') @app.route('/download') def download(): + save_format = request.args.get("format", "json").strip().lower() + + if(save_format == "plaintext"): + ln = len(vars.actions) + + if(ln > 0): + chunks = collections.deque() + for key in reversed(vars.actions): + chunk = vars.actions[key] + chunks.appendleft(chunk) + + if(ln > 0): + txt = vars.prompt + "".join(chunks) + elif(ln == 0): + txt = vars.prompt + + save = Response(txt) + save.headers.set('Content-Disposition', 'attachment', filename='%s.txt' % path.basename(vars.savedir)) + return(save) + # Build json to write js = {} js["gamestarted"] = vars.gamestarted @@ -520,6 +540,7 @@ def download(): "selective": wi["selective"], "constant": wi["constant"] }) + save = Response(json.dumps(js, indent=3)) save.headers.set('Content-Disposition', 'attachment', filename='%s.json' % path.basename(vars.savedir)) return(save) @@ -1964,11 +1985,9 @@ def saveRequest(savpath): if(ln > 0): chunks = collections.deque() - i = 0 for key in reversed(vars.actions): chunk = vars.actions[key] chunks.appendleft(chunk) - i += 1 if(ln > 0): txt = vars.prompt + "".join(chunks) diff --git a/static/application.js b/static/application.js index 929c64c5..d59990d8 100644 --- a/static/application.js +++ b/static/application.js @@ -839,6 +839,7 @@ $(document).ready(function(){ button_saveas = $('#btn_saveas'); button_savetofile = $('#btn_savetofile'); button_download = $('#btn_download'); + button_downloadtxt= $('#btn_downloadtxt'); button_load = $('#btn_load'); button_loadfrfile = $('#btn_loadfromfile'); button_import = $("#btn_import"); @@ -1272,6 +1273,10 @@ $(document).ready(function(){ button_download.on("click", function(ev) { window.open("/download", "_blank"); }); + + button_downloadtxt.on("click", function(ev) { + window.open("/download?format=plaintext", "_blank"); + }); button_load.on("click", function(ev) { socket.send({'cmd': 'loadlistrequest', 'data': ''}); diff --git a/templates/index.html b/templates/index.html index be94009d..e9bf94e4 100644 --- a/templates/index.html +++ b/templates/index.html @@ -41,7 +41,8 @@ Save Save As Save To File... - Download Current Story + Download Story as JSON + Download Story as Plaintext