zoom_test / zoom_test_backend.py
GFiaMon's picture
Add application file
75b6ee6
# zoom_test_backend.py
import time
import threading
import random
from datetime import datetime
from typing import Callable
class ZoomTranscriptionBackend:
def __init__(self):
self.is_listening = False
self.transcription_text = ""
self.speakers = ["Alice", "Bob", "Carol", "David"]
self.on_update_callback = None # For real-time updates
def set_update_callback(self, callback: Callable):
"""Set callback function when new transcription arrives"""
self.on_update_callback = callback
def start_listening(self):
"""Start Zoom RTMS connection (simulated for now)"""
if self.is_listening:
return "Already listening to meeting!"
self.is_listening = True
self.transcription_text = "πŸ”΄ Listening to Zoom meeting...\n\n"
# Start simulated transcription
threading.Thread(target=self._simulate_transcription, daemon=True).start()
return "βœ… Connected to Zoom meeting! Live transcription starting..."
def _simulate_transcription(self):
"""Simulate real Zoom RTMS transcription"""
sample_phrases = [
"Okay team, let's start the meeting",
"I think we should focus on Q4 goals first",
"The budget looks good but we need to cut costs",
"Let's schedule follow-up for next week",
"Anyone have questions about the timeline?",
]
while self.is_listening:
time.sleep(random.uniform(3, 5))
if not self.is_listening:
break
speaker = random.choice(self.speakers)
phrase = random.choice(sample_phrases)
timestamp = datetime.now().strftime("%H:%M:%S")
new_transcript = f"[{timestamp}] {speaker}: {phrase}\n"
self.transcription_text += new_transcript
# Notify frontend if callback is set
if self.on_update_callback:
self.on_update_callback(self.transcription_text)
def stop_listening(self):
"""Stop the transcription"""
self.is_listening = False
return "⏹️ Stopped listening to meeting"
def get_transcription(self):
"""Get current transcription text"""
return self.transcription_text
def clear_transcription(self):
"""Clear all transcription text"""
self.transcription_text = ""
return "πŸ“„ Transcription cleared"