| 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"] |
| ) |
|
|
| callback = gr.CSVLogger() |
|
|
| with gr.Blocks(theme=theme) as demo: |
| |
|
|
| |
| urlInput = gr.Textbox( |
| label="YOUTUBE VIDEO URL", |
| value="https://www.youtube.com/watch?v=BmrUJhY9teE" |
| ) |
|
|
| |
| loadVideoBtn = gr.Button("Load Video") |
|
|
| |
| videoTitle = gr.Textbox( |
| label="VIDEO TITLE", |
| lines=1, |
| interactive=False |
| ) |
|
|
| |
| sampleFrames = gr.Gallery( |
| label="SAMPLE FRAMES", |
| elem_id="gallery", |
| columns=[3], |
| rows=[1], |
| object_fit="contain", |
| height="auto" |
| ) |
|
|
| |
| predVideoBtn = gr.Button(value="Classify Video", visible=False) |
|
|
| |
| predOutput = gr.Label( |
| label="DETECTED LABEL (AND CONFIDENCE LEVEL)", |
| num_top_classes=2, |
| visible=False |
| ) |
|
|
| |
| flagBtn = gr.Button(value="Flag Output", visible=False) |
|
|
| |
| |
| loadVideoBtn.click(fn=load_video_from_url, inputs=[urlInput], outputs=[videoTitle, sampleFrames, predVideoBtn, predOutput]) |
|
|
| |
| predVideoBtn.click(fn=detect_deepfake, outputs=[predOutput, flagBtn]) |
|
|
| |
| callback.setup([urlInput], "flagged_data_points") |
|
|
| |
| flagBtn.click(fn=lambda *args: callback.flag(args), inputs=[urlInput], outputs=None) |
|
|
| demo.launch() |
|
|