File size: 1,766 Bytes
c7a56f2 df9cf6c c7a56f2 df9cf6c c7a56f2 df9cf6c c7a56f2 df9cf6c c7a56f2 | 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 | import gradio as gr
import os
from src.processing.gemini_processor import GeminiProcessor
from src.analysis.coverage_generator import CoverageGenerator
from pathlib import Path
def process_pdf(pdf_file, progress=gr.Progress()):
if pdf_file is None:
raise gr.Error("Please upload a PDF file")
progress(0.1, desc="Initializing...")
processor = GeminiProcessor()
coverage_gen = CoverageGenerator()
try:
# Clean screenplay
progress(0.4, desc="Processing screenplay...")
cleaned_path = Path("cleaned_screenplay_long.txt")
success = processor.process_screenplay(pdf_file.name, str(cleaned_path))
if not success:
raise gr.Error("Failed to process screenplay")
# Generate coverage
progress(0.8, desc="Generating coverage...")
success = coverage_gen.generate_coverage(cleaned_path)
if not success:
raise gr.Error("Failed to generate coverage")
# Read results
with open(cleaned_path, 'r') as f:
cleaned_text = f.read()
with open(Path("coverage.txt"), 'r') as f:
coverage = f.read()
progress(1.0, desc="Complete!")
return cleaned_text, coverage
except Exception as e:
raise gr.Error(f"Error: {str(e)}")
demo = gr.Interface(
fn=process_pdf,
inputs=gr.File(label="Upload Screenplay PDF", file_types=[".pdf"]),
outputs=[
gr.Textbox(label="Cleaned Screenplay", lines=10),
gr.Textbox(label="Coverage Document", lines=10)
],
title="Screenplay Coverage Generator",
description="Upload a screenplay PDF to generate coverage analysis"
)
if __name__ == "__main__":
demo.launch() |