From e7cdeb2ea8a84edfe76c3b122c1495d536a9fa44 Mon Sep 17 00:00:00 2001 From: Eugene Bondarenko Date: Fri, 21 Jun 2024 02:17:51 +0200 Subject: [PATCH] Allow to pass options with form request In the current version there is no way to pass options. These changes are fixing that by allowing to pass options along with a form request. --- webserver.py | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/webserver.py b/webserver.py index 793be2e..1995e0f 100644 --- a/webserver.py +++ b/webserver.py @@ -7,28 +7,30 @@ BROWSER_PATH = '/opt/google/chrome/google-chrome' BROWSER_ARGS = '["--no-sandbox"]' - @server.route('/', methods=['POST']) def singlefile(): + url = request.form.get('url') - if url: - p = subprocess.Popen([ - SINGLEFILE_EXECUTABLE, - '--browser-executable-path=' + BROWSER_PATH, - "--browser-args='%s'" % BROWSER_ARGS, - request.form['url'], - '--dump-content', - ], - stdout=subprocess.PIPE) - else: - return Response('Error: url parameter not found.', - status=500) - singlefile_html = p.stdout.read() - return Response( - singlefile_html, - mimetype="text/html", - ) + if not url: + return Response('Error: url parameter not found.', status=500) + + cmd = [ + SINGLEFILE_EXECUTABLE, + '--browser-executable-path=' + BROWSER_PATH, + "--browser-args='%s'" % BROWSER_ARGS, + url, + '--dump-content' + ] + + # Append additional flags from the form data + for key, value in request.form.items(): + if key != 'url': + cmd.append(f'--{key}={value}') + p = subprocess.Popen(cmd, stdout=subprocess.PIPE) + singlefile_html = p.stdout.read() + return Response(singlefile_html, mimetype="text/html") if __name__ == '__main__': server.run(host='0.0.0.0', port=80) +