import os import webbrowser import time from flask import Flask, render_template,request from backend.subtitles.subs import get_subtitles from backend.keyframes.keyframes import generate_keyframes, black_bar_crop from backend.panel_layout.layout_gen import generate_layout from backend.cartoonize.cartoonize import style_frames from backend.speech_bubble.bubble import bubble_create from backend.page_create import page_create,page_json from backend.utils import cleanup, download_video from backend.utils import copy_template from flask import send_from_directory app = Flask(__name__) @app.route('/') def index(): return render_template('index.html') def create_comic(): start_time = time.time() video = 'video/uploaded.mp4' get_subtitles(video) time.sleep(3) generate_keyframes(video) black_x, black_y, _, _ = black_bar_crop() crop_coords, page_templates, panels = generate_layout() bubbles = bubble_create(video, crop_coords, black_x, black_y) pages = page_create(page_templates,panels,bubbles) page_json(pages) style_frames() print("--- Execution time : %s minutes ---" % ((time.time() - start_time) / 60)) @app.route('/uploader', methods=['GET', 'POST']) def upload_file(): if request.method == 'POST': print(dict(request.form)) f = request.files['file'] #we got the file as file storage object from frontend print(type(f)) cleanup() f.save("video/uploaded.mp4") create_comic() copy_template() webbrowser.open('file:///'+os.getcwd()+'/' + 'output/page.html') return "Comic created Successfully" @app.route('/handle_link', methods=['GET', 'POST']) def handle_link(): if request.method == 'POST': print(dict(request.form)) link = request.form['link'] cleanup() download_video(link) create_comic() copy_template() webbrowser.open('file:///'+os.getcwd()+'/' + 'output/page.html') return "Comic created Successfully" @app.route('/frames/') def frames_static(filename): """Serve generated frame images located in /frames directory""" return send_from_directory('frames', filename)