Publication
Publier, c'est sortir les données de l'événement ouvert — classements, horaire, inscriptions — vers vos fichiers et vos formats : un classement général en PDF, un horaire en Word, les résultats par courriel, un micro-site, un tableur. EVENT écrit des contrats (des fichiers JSON qui décrivent tout ce qu'il sait de l'événement) et exécute de petits scripts Python qui lisent ces contrats et produisent ce que vous voulez. Rien à installer : Python standard suffit, les scripts d'exemple fonctionnent tels quels, et une IA peut en écrire d'autres à partir du contrat.
C'est le module Publication de l'en-tête, à côté de Diffusion. Là où la Diffusion envoie en direct le classement aux tableaux TABLEAU, la Publication fabrique des documents pour le public, le secrétariat ou la fédération.
| exemple.py |
| excel-classement.py |
| pdf-classement.py |
| word-horaire.py |
| courriel-resultats.py |
| site-complet.py |
- La barre d'outils : gérer les scripts, les exécuter, et enregistrer le Guide (IA).
- Le Lancement : quand le script choisi part tout seul (déclencheur, raccourci).
- La liste des scripts (vos fichiers
.py) ; les exemples sont déjà là. - L'éditeur de code du script choisi.
- Le journal : ce que le dernier lancement a écrit, et les erreurs.
Avant de commencer
Installer Python
Les scripts tournent avec Python, qu'EVENT appelle sur le poste — Python n'est pas livré avec EVENT. Une fois, sur chaque poste qui publie :
- Installez Python 3 pour Windows depuis python.org (la version courante convient ; 64 bits).
- À l'installation, cochez « Add python.exe to PATH » (en bas de la première fenêtre) : la commande
pythonsera trouvée telle quelle. - Rien d'autre : aucun
pip install, aucune bibliothèque externe, aucun accès Internet requis. Les exemples fonctionnent avec le Python standard nu.
Si python n'est pas dans le PATH, pas besoin de réinstaller : dans les réglages de Publication, indiquez le
chemin complet vers python.exe (le réglage vaut python par défaut). Si Python manque,
le journal l'indique : « Python introuvable… Installez Python, ou indiquez son chemin dans les réglages. »
Les secrets (mots de passe, clés) — cf.secret
Un script a parfois besoin d'un mot de passe ou d'une clé d'API — par exemple pour envoyer un
courriel. Pour ne pas l'écrire en clair dans le script, EVENT fournit cf.secret("NOM"), qui lit une
variable d'environnement Windows nommée CHRONOFEED_SECRET_NOM. Le NOM est une étiquette que
vous choisissez.
Dans le script d'exemple, cette ligne reste telle quelle (ne mettez pas le mot de passe ici) :
mot_de_passe = cf.secret("SMTP")
cf.secret("SMTP") ira chercher la variable CHRONOFEED_SECRET_SMTP. Vous la créez une fois, avec sa
vraie valeur, par l'invite de commandes de Windows :
- Appuyez sur la touche ⊞ Windows, tapez cmd, puis Entrée : une fenêtre noire s'ouvre (l'invite de commandes).
- Tapez (ou collez avec Ctrl+V) la commande suivante, en remplaçant l'exemple par votre vrai mot de passe, puis Entrée :
Windows répond « SUCCESS: Specified value was saved. »setx CHRONOFEED_SECRET_SMTP "mon-mot-de-passe-bidon" - Fermez l'invite, puis relancez EVENT.
La dernière étape compte : EVENT lance Python en héritant de son environnement, donc la variable doit exister avant
de lancer EVENT (c'est pourquoi on relance). On peut aussi passer par Paramètres Windows → Variables
d'environnement → Nouvelle variable utilisateur (nom CHRONOFEED_SECRET_SMTP, valeur = le mot de passe). Si la
variable n'existe pas, cf.secret renvoie du vide et l'envoi échoue — le signe qu'il faut la créer et relancer EVENT.
Les contrats : tout ce qu'EVENT sait de l'événement
Avant de lancer un script, EVENT écrit (dans le dossier de travail) des fichiers JSON qui décrivent l'événement
ouvert. Un script lit ce dont il a besoin par la bibliothèque chronofeed_sdk (abrégée cf), et ne touche
jamais à la base de données.
Les six contrats
evenement.json— l'événement : nom, lieu, dates, fédération, épreuves et leur état. (cf.evenement())inscriptions.json— les inscrits : dossard, nom, prénom, club, pays, catégorie, épreuves inscrites. (cf.inscriptions())composition.json— les listes de départ : qui court dans quelle course, quel couloir ou quelle série. (cf.composition())horaire.json— l'horaire des courses : ordre, heures prévues, regroupements. (cf.horaire())cg.json— le classement général : rang, dossard, nom, club, pays, temps ou points, écart, position, médaille, officiel ou provisoire. (cf.cg())resultats.json— les résultats épreuve par épreuve, avec le détail des tours (chaque tour et son temps). (cf.resultats())
Chaque contrat est régénéré à chaque exécution, à partir de l'état courant : un script lancé après une officialisation voit le classement officiel. Un contrat qui ne peut pas être construit n'interrompt pas les autres.
Guide (IA)…
Où : Publication, barre d'outils
Enregistre un document du contrat — la description complète des données disponibles, avec des exemples — à donner à une IA pour qu'elle écrive un script à votre place : « fais-moi un PDF de l'horaire par catégorie », « envoie les trois premiers de chaque épreuve par courriel ». Vous collez le script obtenu dans un Nouveau, et vous l'exécutez.
Les scripts d'exemple
EVENT dépose six scripts prêts à l'emploi au premier lancement ; ils servent tels quels, ou de point de départ. Choisissez-en un dans la liste pour voir son code, puis Exécuter.
site-complet.py — le micro-site
Produit un petit site web (horaire, listes de départ, résultats) dans le dossier de sortie, prêt à poser sur une clé USB ou un hébergement. C'est la page publique la plus complète livrée d'office.
pdf-classement.py — le classement général en PDF
Écrit le classement général dans un .pdf propre à imprimer ou à joindre à un courriel — sans aucune
bibliothèque externe (un petit moteur PDF inclus). La porte d'entrée vers tout le reporting en PDF.
excel-classement.py — le classement en Excel
Écrit le classement général dans un classeur .xlsx, pour retravailler les chiffres dans un tableur.
word-horaire.py — l'horaire en Word
Met l'horaire des courses dans un document .docx à remettre aux officiels ou à afficher.
courriel-resultats.py — les résultats par courriel
Envoie le classement par courriel (SMTP). Le mot de passe du compte d'envoi n'est pas écrit dans le script : il passe par un secret (une variable d'environnement), pour ne jamais se retrouver en clair dans un fichier.
exemple.py — le point de départ
Le plus court : il publie une page de classement dans le dossier sortie. À lire d'abord pour comprendre comment
un script lit un contrat et écrit un fichier.
Lancer : à la main, par minuterie, à l'officialisation, au raccourci
Chaque script peut partir tout seul. Les réglages de la bande Lancement valent pour le script sélectionné et sont gardés avec lui ; Actif décoché, le script ne part jamais seul — le bouton Exécuter reste toujours possible.
Actif
Où : Publication, bande Lancement
Coché : le script part selon le déclencheur choisi ci-dessous. Décoché : aucun lancement automatique.
Déclencheur
Où : Publication, bande Lancement
- Manuel (bouton Exécuter) : rien d'automatique ; vous lancez vous-même.
- Minuterie (toutes les N secondes) : le script repart à intervalle régulier. Réglez l'Intervalle (s). Idéal pour un micro-site qui se rafraîchit pendant la compétition.
- À l'officialisation d'un classement : le script part chaque fois qu'un classement est officialisé (ou marqué officiel, ou que les positions sont enregistrées). Les résultats officiels partent ainsi sans y penser.
Raccourci clavier
Où : Publication, bande Lancement
Un script peut aussi avoir un raccourci clavier : cliquez Définir…, puis appuyez sur la touche ou la combinaison voulue (par exemple Ctrl+U, Alt+Z, F5) ; Échap annule la capture. Le raccourci lance le script depuis le module Publication, même sans passer par le bouton. Effacer l'enlève.
Exécuter, arrêter, le journal
Exécuter / Arrêter
Où : Publication, barre d'outils
Exécuter régénère les contrats puis lance le script choisi. Arrêter (visible pendant qu'il tourne) l'interrompt. Ce que le script écrit et ses éventuelles erreurs s'affichent dans le journal, en bas ; Copier le recopie en entier.
Nouveau, Enregistrer, Supprimer
Où : Publication, barre d'outils
Les scripts sont de simples fichiers .py dans le dossier de l'application. Nouveau
crée un fichier vide, Enregistrer garde vos changements, Supprimer
retire le script choisi.