|
|
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'] |
|
|
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/<path:filename>') |
|
|
def frames_static(filename): |
|
|
"""Serve generated frame images located in /frames directory""" |
|
|
return send_from_directory('frames', filename) |
|
|
|
|
|
|
|
|
|
|
|
|