diff --git a/.gitignore b/.gitignore index 4ac9858..6210fbf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,10 @@ +__pycache__/ bin lib lib64 media pyvenv.cfg +uploads +tmp +*.log diff --git a/app.py b/app.py new file mode 100644 index 0000000..ea21137 --- /dev/null +++ b/app.py @@ -0,0 +1,79 @@ +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(temp_path) + stream = ffmpeg.input(temp_path) + stream = ffmpeg.hflip(stream) + stream = ffmpeg.output(stream, out_path) + ffmpeg.run(stream) + print("ive outputted somethign") + # 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(temp_path) + 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") diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..d8084d0 --- /dev/null +++ b/templates/index.html @@ -0,0 +1,146 @@ + + + + + + + Document + + + + + +
+ + +

Official ministry of infra-ordinary

+

Ordinary sightings form

+

Have you seen anything infra-ordinary? Upload your media here!

+ + {% if error %} +

Oops.. Something went wrong: {{ error }}!

+ {% endif %} + + {% if submitted %} +

Thank you for your contribution!

+ back + + {% else %} + +
+ + +
+ + {% endif %} +
+ + + + diff --git a/wsgi.py b/wsgi.py new file mode 100644 index 0000000..2ec612d --- /dev/null +++ b/wsgi.py @@ -0,0 +1,4 @@ +from app import app + +if __name__ == "__main__": + app.run()