From 25c6edad8868d31a13b75a77f9bd36045922607e Mon Sep 17 00:00:00 2001 From: Guido van Dijk Date: Tue, 22 Sep 2026 21:21:00 +0200 Subject: [PATCH] fix(pptx): argument optioneel, en duidelijke melding bij de verkeerde map of de notitieversie Co-Authored-By: Claude Opus 5 --- 00-sessie/sessie-agents-en-projecten.pptx | Bin 3039721 -> 3039721 bytes _gereedschap/maak_pptx.py | 33 ++++++++++++++++++---- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/00-sessie/sessie-agents-en-projecten.pptx b/00-sessie/sessie-agents-en-projecten.pptx index 0939ce6d5b345fa6dacf6032397efcfcaec430bb..588218ea824af27e74129d6b3106d54982cccc45 100644 GIT binary patch delta 3631 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 delta 3631 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 diff --git a/_gereedschap/maak_pptx.py b/_gereedschap/maak_pptx.py index 8465752..b669fd5 100644 --- a/_gereedschap/maak_pptx.py +++ b/_gereedschap/maak_pptx.py @@ -7,8 +7,10 @@ alleen de dia ziet. Het beeld is een afbeelding: de opmaak is precies gelijk aan de tekst is in PowerPoint niet te bewerken. Wijzigen doe je in maak_dias.py en dan opnieuw bouwen. -Gebruik: python3 ../_gereedschap/maak_pptx.py -Bijvoorbeeld in 00-sessie: python3 ../_gereedschap/maak_pptx.py sessie-agents-en-projecten.pdf +Gebruik: python3 ../_gereedschap/maak_pptx.py + vanuit de map van de presentatie (00-sessie, 00-lezing, 00-presentatie). Het script + zoekt zelf de dia-PDF, dus die van de dia's en niet de notitieversie. Staat er meer dan + een, geef dan de naam mee: python3 ../_gereedschap/maak_pptx.py sessie-agents-en-projecten.pdf Staat er een notities-begeleider.json naast maak_dias.py, dan gebruikt het script die uitgebreide notities en zegt het erbij; dat bestand is privé, dus deel die pptx niet. @@ -28,10 +30,31 @@ except ImportError: sys.exit("python-pptx ontbreekt. Bijvoorbeeld: ~/.local/venvs/uitlegvideo/bin/python " "../_gereedschap/maak_pptx.py ") -pdf = Path(sys.argv[1]).resolve() -if not pdf.exists(): - sys.exit(f"niet gevonden: {pdf}") +def zoek_dia_pdf(waar: Path) -> Path: + """De PDF van de dia's in deze map: zonder -met-notities in de naam.""" + if not (waar / "maak_dias.py").exists(): + sys.exit(f"{waar} is geen presentatiemap. Draai dit vanuit 00-sessie, 00-lezing of " + f"00-presentatie, of geef het pad naar de dia-PDF mee.") + kandidaten = [f for f in sorted(waar.glob("*.pdf")) if not f.stem.endswith("-met-notities")] + if not kandidaten: + sys.exit(f"geen dia-PDF in {waar.name}; bouw hem eerst met python3 bouw_pdf.py") + if len(kandidaten) > 1: + namen = ", ".join(f.name for f in kandidaten[:5]) + sys.exit(f"meerdere PDF's in {waar.name} ({namen}); geef de naam van de dia-PDF mee") + return kandidaten[0] + + +if len(sys.argv) > 1: + pdf = Path(sys.argv[1]).resolve() + if not pdf.exists(): + sys.exit(f"niet gevonden: {pdf}") + if pdf.stem.endswith("-met-notities"): + sys.exit(f"{pdf.name} is de notitieversie. Geef de PDF van de dia's, of laat het argument weg.") +else: + pdf = zoek_dia_pdf(Path.cwd()) MAP = pdf.parent +if not (MAP / "maak_dias.py").exists(): + sys.exit(f"geen maak_dias.py in {MAP}; draai dit vanuit de map van een presentatie") P = MAP / "project" PRIVE = (MAP / "notities-begeleider.json").exists()