import gradio as gr
from transformers import pipeline

# Initialize summarization pipeline
summarizer = pipeline("summarization", model="t5-small", revision="main")

# Function to summarize text
def summarize_text(text, model):
    summary = model(text)[0]['summary_text']
    return summary

# Function to read PDF and summarize
def summarize_pdf(pdf_file, model):
    import fitz  # PyMuPDF
    with fitz.open(pdf_file.name) as doc:
        text = ""
        for page in doc:
            text += page.get_text()
    return summarize_text(text, model)

# Gradio Interface
def summarize(input_text, uploaded_file):
    if input_text:
        summary = summarize_text(input_text, summarizer)
    else:
        summary = summarize_pdf(uploaded_file, summarizer)
    return summary

inputs = [
    gr.Textbox(lines=10, label="Enter Text to Summarize"),
    gr.File(label="Upload PDF file")
]
output = gr.Textbox(label="Summary")

gr.Interface(
    fn=summarize,
    inputs=inputs,
    outputs=output,
    title="Text Summarization App",
    description="Summarize text or PDF files using pre-trained models.",
    theme="compact",  # Example theme

).launch('share=True')