from flask import Flask, render_template, request, flash, redirect, url_for from werkzeug.utils import secure_filename from PIL import Image import os # import ffmpeg import datetime; app = Flask(__name__) app.config['UPLOAD_FOLDER'] = "uploads" app.config['TMP_FOLDER'] = "tmp" def get_extension(filename): return filename.rsplit('.', 1)[1].lower() @app.route("/") def index(): args = request.args print("name") print(args.get('result')) return render_template('index.html', result=args.get('result')) @app.route("/submitted") def submitted(): print("doingsubmit") return render_template('index.html', error=request.args.get('error'), submitted=True) @app.route('/upload', methods=['POST']) def upload_file(): global file_count if request.method == 'POST': if 'file' not in request.files: flash('No file part') return redirect(request.url) file = request.files['file'] if file.filename == '': flash('No selected file') return redirect(request.url) time = datetime.datetime.now().isoformat() filename = f'{time}_{secure_filename(file.filename)}' ext = get_extension(file.filename) temp_path = os.path.join(app.config['TMP_FOLDER'], filename) if ext in ['png', 'jpg', 'jpeg', 'gif']: print("dealing with an image!") img = Image.open(file) img.thumbnail((100, 100), Image.LANCZOS) img.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) return redirect(url_for('submitted')) elif ext in ['mp4', 'avi', 'mov', 'flv']: out_path = os.path.join(app.config['UPLOAD_FOLDER'], filename.rsplit('.', 1)[0].lower() + '.mp4') file.save(out_path) # stream = ffmpeg.input(temp_path) # stream = ffmpeg.hflip(stream) # stream = ffmpeg.output(stream, out_path) # ffmpeg.run(stream) # ffmpeg.input(temp_path).output(out_path,vf="scale=300:230", crf=24).run() # os.remove(temp_path) return redirect(url_for('submitted')) elif ext in ['mp3', 'wav', 'flac']: out_name = filename.rsplit('.', 1)[0].lower() + '.mp3' file.save(os.path.join(app.config['UPLOAD_FOLDER'], out_name)) # ffmpeg.input(temp_path).output(os.path.join(app.config['UPLOAD_FOLDER'], out_name)).run() # os.remove(temp_path) return redirect(url_for('submitted')) else: print("not an image!") return redirect(url_for('submitted', Error="The file you are trying to upload is not supported by our infra-ordinary")) print("do you even get here?") else: return render_template('index.html', Error="server error")