import cv2
import numpy as np
import streamlit as st
import os
import base64

st.set_page_config(layout="wide", page_title="CoNR demo", page_icon="🪐")

st.title("CoNR demo")
st.markdown(""" <style> 
            #MainMenu {visibility: hidden;} 
            footer {visibility: hidden;} 
            </style> """, unsafe_allow_html=True)

def get_base64(bin_file):
    with open(bin_file, "rb") as f:
        data = f.read()
    return base64.b64encode(data).decode()

# def set_background(png_file):
#     bin_str = get_base64(png_file)
#     page_bg_img = '''
#     <style>
#     .stApp {
#     background-image: url("data:image/png;base64,%s");
#     background-size: 1920px 1080px;
#     background-attachment:fixed;
#     background-position:center;
#     background-repeat:no-repeat;
#     }
#     </style>
#     ''' % bin_str
#     st.markdown(page_bg_img, unsafe_allow_html=True)

# set_background('ipad_bg.png')

upload_img = (st.file_uploader("输入character sheet", "png", accept_multiple_files=True))
pose_format = "png"
upload_img2 = (st.file_uploader("pose images", pose_format, accept_multiple_files=True))

# os.system("sh download.sh")

if st.button("RUN!"):
    os.system("rm character_sheet/*")
    os.system("rm result/*")
    os.system("rm poses/*")
    if upload_img is not None:
        os.makedirs("character_sheet", exist_ok=True)
        for i in range(len(upload_img)):
            with open(f"character_sheet/{i}.{pose_format}", "wb") as f:
                f.write(upload_img[i].read())
        os.makedirs("poses", exist_ok=True)
        for i, e in enumerate(sorted(upload_img2, key=lambda x: x.name)):
            with open(f"poses/{i:04}.png", "wb") as f:
                f.write(e.read())
        st.info("努力推理中...")
        os.system("sh infer.sh")
        st.info("Done!")
        video_file=open("output.mp4", "rb")
        video_bytes = video_file.read()
        st.video(video_bytes, start_time=0)
    else:
        st.info("还没上传图片呢> <")