ScriptLLM / app.py
yalrashed's picture
Update app.py
df9cf6c verified
raw
history blame
1.77 kB
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()