import logging import gradio as gr from utils import process_large_text, generate_lesson_from_transcript as generate_lesson_from_transcript_logic, pdf_to_text from pdfminer.high_level import extract_text logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s") logger = logging.getLogger(__name__) def generate_lesson(doc_text=None, pdf_file=None): try: if pdf_file and doc_text: logger.warning("Both text and PDF file provided. Ignoring text input.") return "Please provide either a text input or a PDF file, not both.", None if pdf_file: logger.info(f"Processing uploaded PDF file: {pdf_file.name}") doc_text = pdf_to_text(pdf_file.name) logger.info("Processing the document text.") processed_text = process_large_text(doc_text) logger.info("Generating lesson from transcript.") generated_text, output_path = generate_lesson_from_transcript_logic(processed_text) if output_path: logger.info(f"Lesson generated successfully. Output saved to: {output_path}") return generated_text, gr.File(output_path) else: logger.info("Lesson generated successfully, but no output file created.") return generated_text, None except Exception as e: logger.error(f"Error occurred while generating lesson: {str(e)}") return f"Error occurred: {str(e)}", None gr.Interface( fn=generate_lesson, inputs=[gr.Textbox(label="Input Text"), gr.File(label="Upload PDF")], outputs=["text", "file"], ).launch()