chore: App file generated
Browse files
app.py
ADDED
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import streamlit.components.v1 as components
|
3 |
+
import subprocess
|
4 |
+
import os
|
5 |
+
import glob
|
6 |
+
|
7 |
+
# Function to run the model and generate HTML
|
8 |
+
def generate_html(text_input):
|
9 |
+
command = [
|
10 |
+
"python", "generate.py",
|
11 |
+
"--resume-pth", "output/vq/2023-07-19-04-17-17_12_VQVAE_20batchResetNRandom_8192_32/net_last.pth",
|
12 |
+
"--resume-trans", "output/t2m/2023-10-10-03-17-01_HML3D_44_crsAtt2lyr_mask0.5-1/net_last.pth",
|
13 |
+
"--text", text_input,
|
14 |
+
"--length", str(st.session_state.length)
|
15 |
+
]
|
16 |
+
# Run the command
|
17 |
+
subprocess.run(command, check=True)
|
18 |
+
# Return the path of the latest HTML file in the output directory
|
19 |
+
return find_latest_html_file('output')
|
20 |
+
|
21 |
+
# Function to find the latest HTML file in the specified directory
|
22 |
+
def find_latest_html_file(base_path):
|
23 |
+
# List all HTML files in the output directory and find the latest one
|
24 |
+
list_of_files = glob.glob(f'{base_path}/*.html')
|
25 |
+
if not list_of_files:
|
26 |
+
return None
|
27 |
+
latest_file = max(list_of_files, key=os.path.getctime)
|
28 |
+
return latest_file
|
29 |
+
|
30 |
+
# Streamlit app
|
31 |
+
components.html("""
|
32 |
+
<h1 style='text-align: center; color: white;'>MMM Model Demo</h1>
|
33 |
+
""",
|
34 |
+
height=100)
|
35 |
+
|
36 |
+
# Initialize session state variable for text input
|
37 |
+
text_input = st.text_area("Enter text here:", value="", key="text_input")
|
38 |
+
length = st.number_input("Length of the generated text:", value=156, key="length")
|
39 |
+
|
40 |
+
# Store the input text in session state
|
41 |
+
st.session_state.input_text = text_input
|
42 |
+
st.session_state.length = length
|
43 |
+
|
44 |
+
# Button trigger to generate HTML
|
45 |
+
if st.button("Generate HTML"):
|
46 |
+
st.session_state.generate_html = True
|
47 |
+
else:
|
48 |
+
st.session_state.generate_html = False
|
49 |
+
|
50 |
+
# Check if HTML generation was triggered and input is not empty
|
51 |
+
if st.session_state.text_input and st.session_state.generate_html:
|
52 |
+
html_file_path = generate_html(st.session_state.text_input) # Uses session state
|
53 |
+
if html_file_path and os.path.exists(html_file_path):
|
54 |
+
with open(html_file_path, 'r') as file:
|
55 |
+
html_content = file.read()
|
56 |
+
|
57 |
+
# Embed HTML content in an iframe
|
58 |
+
iframe = f"<iframe srcdoc='{html_content}' style='width:100%; height:800px; border:none;'></iframe>"
|
59 |
+
components.html(iframe, height=800)
|
60 |
+
else:
|
61 |
+
st.error("Generated HTML file not found.")
|