import gradio as gr
from logging_config import log_buffer
from transcription_tool import TranscriptTool  # Assuming TranscriptionTool is in `transcription_tool.py`

# smolagent transcription tool
transcript_tool = TranscriptTool()


def transcribe_and_stream_logs(file):
    # Use the path to the uploaded file
    temp_file_path = file.name

    # Perform transcription
    transcription_result = transcript_tool.forward(temp_file_path)

    # Stream logs
    log_buffer.seek(0)
    logs = log_buffer.read()

    return transcription_result, logs


with gr.Blocks() as app:
    gr.Markdown("# TranscriptTool: Transcribe Audio/Video")
    gr.Markdown("TranscriptTool is a smolagent tool used to transcribe audio and video files into text. This tool allows agents to process multimedia inputs efficiently. Easily used within smolagents via the Hugging Face API.)

    file_input = gr.File(label="Upload Audio/Video File", file_types=["audio", "video"])
    transcribe_button = gr.Button("Transcribe")

    transcription_output = gr.Textbox(label="Transcription", lines=10)
    log_output = gr.Textbox(label="Logs", lines=15)

    transcribe_button.click(
        fn=transcribe_and_stream_logs,
        inputs=file_input,
        outputs=[transcription_output, log_output]
    )

if __name__ == "__main__":
    app.launch()