NotebookZayn / zayn.py
NextGenC's picture
Update zayn.py
5792b1f verified
import os
import fitz
import google.generativeai as genai
from functools import lru_cache
from typing import Optional, List
API_KEY = "YOUR GEMINI API KEY"
genai.configure(api_key=API_KEY)
try:
model = genai.GenerativeModel('gemini-2.0-flash')
except Exception as e:
print(f"Model başlatılamadı: {e}")
exit()
@lru_cache(maxsize=10)
def extract_text_from_pdf(pdf_path: str) -> Optional[str]:
if not os.path.exists(pdf_path):
return None
try:
doc = fitz.open(pdf_path)
text = "\n".join(page.get_text("text") for page in doc)
return text.strip() if text else None
except Exception as e:
print(f"PDF işlenirken hata oluştu: {e}")
return None
def extract_text_from_multiple_pdfs(pdf_paths: List[str]) -> Optional[str]:
texts = []
for path in pdf_paths:
text = extract_text_from_pdf(path)
if text:
texts.append(text)
return "\n".join(texts) if texts else None
def build_prompt(context: str, request: str) -> str:
req_lower = request.lower()
if "özetle" in req_lower:
return f"Metni kısaca özetle:\n\n{context}"
elif "çevir" in req_lower:
return f"Metni İngilizce'ye çevir:\n\n{context}"
else:
return f"Bağlam: {context}\n\nKullanıcı: {request}\n\nLütfen uygun yanıtı oluştur."
def process_request(context: str, request: str) -> str:
prompt = build_prompt(context, request)
try:
response = model.generate_content(prompt)
return response.text.strip()
except Exception as e:
return f"Model hata: {e}"
def main():
print("NotebookLM-ZaynAI")
while True:
pdf_input = input("PDF dosyasının yolunu girin: ").strip()
if not pdf_input:
print("Lütfen geçerli dosya yolu girin.")
continue
pdf_paths = [path.strip() for path in pdf_input.split(",")]
context = extract_text_from_multiple_pdfs(pdf_paths)
if context:
break
print("PDF dosyalarından metin çıkarılamadı, lütfen dosya yollarını kontrol edin.")
print("Çık yazarak ZaynAI'dan çıkabilirsiniz.")
while True:
user_request = input("Soru/Talimat: ").strip()
if user_request.lower() == "çık":
print("Çıkılıyor...")
break
if not user_request:
continue
answer = process_request(context, user_request)
print("\nYanıt:")
print(answer)
print()
if __name__ == "__main__":
main()