import gradio as gr from helpers import load_video_from_url, detect_deepfake theme = gr.themes.Default( primary_hue="stone", secondary_hue="blue", neutral_hue="zinc", spacing_size="md", text_size="md", font=[gr.themes.GoogleFont("IBM Plex Mono"), "system-ui"] ) with gr.Blocks(theme=theme) as demo: # DEFINE COMPONENTS # Text box for inputting Youtube URL urlInput = gr.Textbox( label="YOUTUBE VIDEO URL", value="https://www.youtube.com/watch?v=BmrUJhY9teE" ) # Button for downloading the video and previewing sample frames loadVideoBtn = gr.Button("Load Video") # Text box for displaying video title videoTitle = gr.Textbox( label="VIDEO TITLE", lines=1, interactive=False ) # Image Gallery for previewing sample frames sampleFrames = gr.Gallery( label="SAMPLE FRAMES", elem_id="gallery", columns=[3], rows=[1], object_fit="contain", height="auto" ) # Button for generating video prediction predVideoBtn = gr.Button(value="Classify Video", visible=False) # Label for displaying prediction predOutput = gr.Label( label="DETECTED LABEL (AND CONFIDENCE LEVEL)", num_top_classes=2, visible=False ) # DEFINE FUNCTIONS # Load video from URL, display sample frames, and enable prediction button loadVideoBtn.click(fn=load_video_from_url, inputs=[urlInput], outputs=[videoTitle, sampleFrames, predVideoBtn, predOutput]) # Generate video prediction predVideoBtn.click(fn=detect_deepfake, outputs=[predOutput]) demo.launch()