File size: 2,345 Bytes
75b6ee6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# zoom_test_frontend.py
import gradio as gr
from zoom_test_backend import ZoomTranscriptionBackend

# Initialize backend
backend = ZoomTranscriptionBackend()

def update_display():
    """Function to get latest transcription from backend"""
    return backend.get_transcription()

def handle_start_listening():
    """Handle start button click"""
    return backend.start_listening()

def handle_stop_listening():
    """Handle stop button click"""
    return backend.stop_listening()

def handle_clear_transcription():
    """Handle clear button click"""
    return backend.clear_transcription()

# Create Gradio interface
with gr.Blocks(title="Zoom Transcription Test") as demo:
    gr.Markdown("# ๐ŸŽฏ Zoom Live Transcription Test")
    gr.Markdown("Frontend UI - Backend handles all Zoom logic")
    
    with gr.Row():
        with gr.Column():
            start_btn = gr.Button("๐ŸŽง Start Listening", variant="primary")
            stop_btn = gr.Button("โน๏ธ Stop Listening", variant="secondary")
                                                                # In your frontend, add this button:
            refresh_btn = gr.Button("๐Ÿ”„ Refresh Transcription")
            clear_btn = gr.Button("๐Ÿ“„ Clear Text", variant="stop")
            status = gr.Textbox(label="Status", interactive=False)
        
    with gr.Row():
        transcription_display = gr.Textbox(
            label="Live Transcription",
            lines=15,
            max_lines=20,
            interactive=False,
            placeholder="Transcription will appear here live..."
        )
    
    # Auto-refresh the transcription display every second
    demo.load(
        fn=update_display,
        outputs=transcription_display,
    )
    
    # Button actions
    start_btn.click(
        fn=handle_start_listening,
        outputs=status
    )
    
    stop_btn.click(
        fn=handle_stop_listening,
        outputs=status
    )


    # Add this click event:
    refresh_btn.click(
        fn=update_display,
        outputs=transcription_display
    )
    
    clear_btn.click(
        fn=handle_clear_transcription,
        outputs=status
    ).then(
        fn=update_display,
        outputs=transcription_display
    )

if __name__ == "__main__":
    demo.launch(
        server_name="0.0.0.0",
        server_port=7860,
        share=True
    )