SPB Git

Repository Public Research preview

aligner_script.py 1.1 KB 20 lines python

1#!/usr/bin/env python32"""aligner_script.py <dossier séance> — compare les en-têtes « ### p. NN — Titre » du SCRIPT_PROFESSEUR.md avec LISTE_DIAPOS.md (titres extraits du PDF final)."""3import re, sys, pathlib, unicodedata4d = pathlib.Path(sys.argv[1])5def norm(s):6    s = s.replace("’", "'").replace("‘", "'"); s = unicodedata.normalize("NFKD", s).encode("ascii", "ignore").decode().lower()7    return re.sub(r"[^a-z0-9]+", " ", s).strip()8liste = {}9for m in re.finditer(r"^p\.\s*(\d+)\s*[—-]\s*(.+)$", (d / "LISTE_DIAPOS.md").read_text(), re.M):10    liste[int(m.group(1))] = m.group(2).strip()11script = re.findall(r"^###\s*p\.\s*(\d+)\s*[—-]\s*(.+)$", (d / "SCRIPT_PROFESSEUR.md").read_text(), re.M)12bad = 013for n, t in script:14    n = int(n); ref = liste.get(n, "")15    a, b = norm(t), norm(ref)16    ok = bool(a) and (a[:25] in b or b[:25] in a or a.split(" ")[:3] == b.split(" ")[:3])17    if not ok:18        bad += 1; print(f"p. {n:3d} | script : {t[:60]!r} | PDF : {ref[:60]!r}")19print(f"{len(script)} en-têtes de script, {len(liste)} pages listées, {bad} désalignement(s)")20
Files main
Menu

Theme