import os
from pathlib import Path
from bs4 import BeautifulSoup
from fpdf import FPDF

STORAGE_DIR = Path("/home/dayhanbiz/public_html/3-damja.science/storage")
FONT_PATH = STORAGE_DIR / "DejaVuSans.ttf"

def convert_fb2_to_pdf(fb2_path: Path, pdf_path: Path):
    try:
        with open(fb2_path, 'r', encoding='utf-8', errors='ignore') as f:
            soup = BeautifulSoup(f, 'xml')
            
        pdf = FPDF()
        pdf.add_page()
        pdf.add_font("DejaVu", style="", fname=str(FONT_PATH))
        pdf.set_font("DejaVu", size=12)
        
        title_tag = soup.find('book-title')
        if title_tag and title_tag.text:
            pdf.set_font("DejaVu", size=16)
            pdf.multi_cell(0, 10, title_tag.text.strip(), align='C')
            pdf.ln(10)
            pdf.set_font("DejaVu", size=12)

        for p in soup.find_all(['p', 'empty-line']):
            if p.name == 'empty-line':
                pdf.ln(5)
            else:
                text = p.get_text(strip=True)
                if text:
                    pdf.multi_cell(0, 7, text)
                    pdf.ln(2)
                    
        pdf.output(str(pdf_path))
        return True
    except Exception as e:
        print(f"Ошибка при конвертации {fb2_path.name}: {e}")
        return False

if __name__ == "__main__":
    if not FONT_PATH.exists():
        print("Шрифт не найден. Запустите сначала тестовый скрипт для скачивания.")
        exit(1)
        
    fb2_files = list(STORAGE_DIR.rglob("*.fb2"))
    print(f"Найдено файлов .fb2: {len(fb2_files)}")
    
    converted = 0
    for fb2_file in fb2_files:
        pdf_file = fb2_file.with_suffix(".pdf")
        if not pdf_file.exists():
            print(f"Конвертируем: {fb2_file.name} ...")
            if convert_fb2_to_pdf(fb2_file, pdf_file):
                converted += 1
        else:
            print(f"Пропуск (PDF уже существует): {fb2_file.name}")
            
    print(f"\nГотово! Успешно конвертировано новых файлов: {converted}")
