import argparse import hashlib import json from pathlib import Path import fitz parser = argparse.ArgumentParser() parser.add_argument("pdf", type=Path) args = parser.parse_args() root = Path(__file__).resolve().parents[1] source = args.pdf.resolve() if not source.is_relative_to(root): raise SystemExit("PDF musi znajdować się w Vilmal.") sha = hashlib.sha256(source.read_bytes()).hexdigest() out = root / "data" / "media" / "derived" / "pdf-reviews" / sha out.mkdir(parents=True, exist_ok=True) with fitz.open(source) as document: pages = [] for index, page in enumerate(document): image = out / f"page-{index + 1}.png" if not image.exists(): page.get_pixmap(matrix=fitz.Matrix(1.5, 1.5), alpha=False).save(image) pages.append({"page": index + 1, "image": str(image), "text": page.get_text()}) print(json.dumps({"sha256": sha, "pages": pages}, ensure_ascii=True))