import streamlit as st from utils import * st.set_page_config( page_title="Number to Video", page_icon="🎥", initial_sidebar_state="collapsed", ) # Input number number = st.text_input("Enter a number between 1 and 99,99,999", "24") number = int(number) if number: col1, col2 = st.columns(2) with col1: with st.container(border=True): st.subheader("Settings") st.divider() avatar = st.radio("Choose an avatar", ("Custom avatar", "Template avatar")) avatar = "custom" if avatar == "Custom avatar" else "template" # Generate clip sequence based on the number clips = generate_clip_sequence(number) if clips: st.write("Generated Clips Sequence:") for i, clip in enumerate(clips): st.write(f"Clip {i + 1}: {clip}") submit = st.button("Create Video", use_container_width=True) if clips: with st.sidebar: st.title("Advanced Settings") trim_settings = [] for i, clip in enumerate(clips): with st.container(border=True): st.write(f"Adjust settings for {clip}:") length = get_clip_duration(clip, avatar) default_trim_start = 0.10 default_trim_end = length - 0.10 # trim_bounds = st.slider( # f"Trim bounds for {clip}", # 0.0, length, # (default_trim_start, default_trim_end), # 0.01, # key=f"bounds_{i}" # ) # trim_bounds = tuple([round(b, 2) for b in trim_bounds]) # print(trim_bounds) # trim_settings.append(trim_bounds) trim_start = st.slider(f"Trim start for {clip}", 0.0, float(length), 0.00, 0.01, key=f"start_{i}") trim_end = st.slider(f"Trim end for {clip}", 0.0, float(length), 0.00, 0.01, key=f"end_{i}") trim_settings.append((trim_start, trim_end)) print(trim_settings) with col2: with st.container(border=True): st.subheader("Output") output_file = "output.mp4" if submit: pass # Create the video with individual clip settings create_advanced_video(number, trim_settings, avatar, output_file) st.video(output_file, autoplay=True)