NotebookLM / app.py
yumna7's picture
Upload folder using huggingface_hub
8071a04 verified
import google.generativeai as genai
import gradio as gr
import os
import fitz # PyMuPDF
# 🔑 Configure Gemini API
api_key = os.getenv("YOUR_GEMINI_API_KEY")
genai.configure(api_key=api_key)
# اختر موديل Gemini
model = genai.GenerativeModel("gemini-1.5-flash")
# ---- Helper: استخراج النصوص من PDF ----
def extract_text_from_pdf(pdf_file):
text = ""
doc = fitz.open(pdf_file.name)
for page in doc:
text += page.get_text("text") + "\n"
return text.strip()
# ---- Core function: Summarize with Gemini ----
def summarise_pdf(pdf_file):
if pdf_file is None:
return "⚠️ Please upload a PDF file."
# 1. استخراج النص
pdf_text = extract_text_from_pdf(pdf_file)
# 2. تجهيز البرومبت
prompt = f"""
You are NotebookLM Quick Synthesiser inside Google AI Lab.
The user uploaded a subsidy-regulation document.
Please summarise **the key rules and important points** clearly.
Text of document:
{pdf_text[:5000]}
Format the summary as **Markdown** with:
- Main Rules
- Obligations
- Exceptions / Notes
"""
# 3. استدعاء Gemini
response = model.generate_content(prompt)
summary = response.text.strip()
return summary
# ---- Gradio UI ----
with gr.Blocks() as demo:
gr.Markdown("## 📝 Micro-Lab – NotebookLM Quick Synthesiser")
gr.Markdown("Upload a subsidy-regulation PDF → Gemini will summarise key rules in Markdown.")
with gr.Row():
with gr.Column():
pdf_input = gr.File(label="📂 Upload PDF", file_types=[".pdf"])
summarise_btn = gr.Button("⚡ Summarise with NotebookLM")
with gr.Column():
output_md = gr.Markdown(value="⬅️ Upload a PDF and click Summarise.", elem_id="output-area")
# ✅ نعرض رسالة loading قبل التنفيذ
summarise_btn.click(
fn=lambda x: "⏳ Summarising... please wait",
inputs=pdf_input,
outputs=output_md
).then(
summarise_pdf,
inputs=pdf_input,
outputs=output_md
)
demo.launch()