Files
quartier/prototypes/axo-test/assembler.py
T
Jules NényandClaude Opus 5.5 731531dbe2 Test axonométrique du 27/09 : pipeline de fabrication et prototype
pipeline/axo : extraction du Rhino, recalage sur la planche (1:640), maisons,
arbres (positions réelles des blocs, couleurs de la planche), scène en mètres,
sols depuis le PDF Illustrator vectoriel (calques pilotés), bulles de la page 15,
planche de l'eau nettoyée. prototypes/axo-test : la page de test et son assembleur.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 16:46:14 +02:00

22 lines
1.2 KiB
Python

"""Assemble la maquette autonome (une seule page HTML, images intégrées) depuis template.html.
À lancer dans le dossier où le pipeline a écrit ses sorties (scene.json, eau_crop.json,
sol2035.jpg, solauj.jpg, eau_crop.jpg, bulles/). C'est la maquette de test publiée le 27/09 ;
la version de production (LOT Q2+) vit dans src/ et ne passe pas par ce fichier.
"""
import base64, json, os, sys
ici = os.path.dirname(os.path.abspath(__file__))
b64 = lambda f, m: "data:%s;base64,%s" % (m, base64.b64encode(open(f, "rb").read()).decode())
t = open(os.path.join(ici, "template.html")).read()
bulles = {f[:-4]: b64("bulles/" + f, "image/png") for f in sorted(os.listdir("bulles"))}
t = (t.replace("__SCENE__", open("scene.json").read())
.replace("__BULLES__", json.dumps(bulles))
.replace("__EAUPTS__", open("eau_crop.json").read())
.replace("__SOL2035__", b64("sol2035.jpg", "image/jpeg"))
.replace("__SOLAUJ__", b64("solauj.jpg", "image/jpeg"))
.replace("__EAU__", b64("eau_crop.jpg", "image/jpeg")))
sortie = sys.argv[1] if len(sys.argv) > 1 else "quelque-part-en-2035.html"
open(sortie, "w").write(t)
print(sortie, "%.2f Mo" % (len(t.encode()) / 1e6))