Spaces:
Runtime error
Runtime error
| from flask import Flask, render_template, request, redirect, url_for | |
| import subprocess | |
| import os | |
| from werkzeug.utils import secure_filename | |
| app = Flask(__name__) | |
| # Configuration for file uploads | |
| UPLOAD_FOLDER = 'uploads' | |
| app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER | |
| OUTPUT_FOLDER = 'output_files' | |
| app.config['OUTPUT_FOLDER'] = OUTPUT_FOLDER | |
| def index(): | |
| if request.method == 'POST': | |
| # Handle file uploads | |
| source_file = request.files['source'] | |
| target_file = request.files['target'] | |
| frame_processor = request.form.getlist('frame_processor') | |
| # Save uploaded files | |
| source_path = os.path.join(app.config['UPLOAD_FOLDER'], secure_filename(source_file.filename)) | |
| target_path = os.path.join(app.config['UPLOAD_FOLDER'], secure_filename(target_file.filename)) | |
| source_file.save(source_path) | |
| target_file.save(target_path) | |
| # Determine output file name | |
| output_filename = secure_filename('output.jpg') # Default output format is JPEG | |
| # Build the command based on the provided options | |
| command = ['python', 'run.py', '-s', source_path, '-t', target_path] | |
| command.extend(['-o', os.path.join(app.config['OUTPUT_FOLDER'], output_filename)]) | |
| command.extend(['--frame-processor', *frame_processor]) | |
| # Execute the command | |
| try: | |
| subprocess.run(command, check=True) | |
| return redirect(url_for('output', filename=output_filename)) | |
| except subprocess.CalledProcessError: | |
| return render_template('error.html') | |
| return render_template('index.html') | |
| def output(filename): | |
| return render_template('output.html', filename=filename) | |
| def output_image(filename): | |
| return app.send_static_file(os.path.join(app.config['OUTPUT_FOLDER'], filename)) | |
| if __name__ == '__main__': | |
| os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True) | |
| os.makedirs(app.config['OUTPUT_FOLDER'], exist_ok=True) | |
| app.run(host="0.0.0.0", port=7860, debug=True) | |