# -*- coding: utf-8 -*-
"""Extrae texto de PDFs del expediente a archivos .md"""

import re
from pathlib import Path

try:
    from PyPDF2 import PdfReader
except ImportError:
    raise SystemExit("PyPDF2 no instalado")

ROOT = Path(r"C:\xampp\htdocs\DesgloseTSJCV\documentos")
OUT_TEXT = ROOT / "textos_extraidos"
OUT_TEXT.mkdir(exist_ok=True)

# PDFs prioritarios -> nombre salida
PRIORITY = {
    ROOT
    / "DEMANDA IMPUGNACION INSS/demanda impugnacion inss/Demanda Seguridad social.pdf": "01_demanda_impugnacion_inss_DESDE_PDF.md",
    ROOT / "JUZGADO SOCIAL N1/SENTENCIA DIEGO.pdf": "02_sentencia_juzgado_instancia_DESDE_PDF.md",
    ROOT
    / "RECURSO SUPLICACION AL TSJCV/recurso suplicacion.pdf": "03_recurso_suplicacion_DESDE_PDF.md",
    ROOT / "TSJCV/sentencia/Sentencia Diego.pdf": "05_sentencia_tsjcv_DESDE_PDF.md",
    ROOT
    / "DEMANDA IMPUGNACION INSS/informe pericial y fuentes/PERICIAL_Diego Martinez_signed.pdf": "06_informe_pericial_DESDE_PDF.md",
}


def extract_pdf(pdf_path: Path) -> tuple[str, int]:
    reader = PdfReader(str(pdf_path))
    pages = []
    for i, page in enumerate(reader.pages, 1):
        text = page.extract_text() or ""
        if text.strip():
            pages.append(f"<!-- pagina {i} -->\n\n{text}")
    return "\n\n---\n\n".join(pages), len(reader.pages)


def write_md(out_name: str, title: str, source: Path, body: str, pages: int) -> None:
    header = (
        f"# {title}\n\n"
        f"> **Fuente:** `{source.relative_to(ROOT.parent)}`\n"
        f"> **Paciente / actor:** Diego Martínez Saiz\n"
        f"> **Páginas PDF:** {pages}\n"
        f"> Extracción automática — revisar contra el original.\n\n---\n\n"
    )
    path = OUT_TEXT / out_name
    path.write_text(header + body, encoding="utf-8")
    chars = len(body)
    quality = "OK" if chars > 500 else "BAJA (¿escaneado?)"
    print(f"  [{quality}] {out_name}: {chars} chars, {pages} pp.")


def main():
    print("=== PDFs prioritarios ===")
    for pdf, out in PRIORITY.items():
        if not pdf.exists():
            print(f"  FALTA: {pdf}")
            continue
        body, n = extract_pdf(pdf)
        title = out.replace("_DESDE_PDF.md", "").replace("_", " ")
        write_md(out, title, pdf, body, n)

    print("\n=== Resto de PDFs (informes) ===")
    skip = set(PRIORITY.keys())
    for pdf in sorted(ROOT.rglob("*.pdf")):
        if pdf in skip or "justificante" in pdf.name.lower():
            continue
        rel = pdf.relative_to(ROOT)
        safe = re.sub(r"[^\w\-_.]", "_", str(rel.with_suffix("")))
        out = f"informes/{safe}.md"
        out_path = OUT_TEXT / out
        out_path.parent.mkdir(parents=True, exist_ok=True)
        body, n = extract_pdf(pdf)
        title = pdf.stem
        write_md(str(Path("informes") / f"{safe}.md"), title, pdf, body, n)


if __name__ == "__main__":
    main()
