Omnigraph
Graph engine for context assembly. Object-storage native. Agents work with graph data the way engineers work with code: branched, typed, reviewed, merged, audited, and governed.
Résultats officiels, simulateur de coalitions et comparaison avec 2022 pour la 26e Knesset.
Translation pending
DataPython · HTMLGitHub @eliejesuranOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Résultats officiels en direct des élections israéliennes 2026 (CEC), blocs pressentis et simulateur de coalitions. HTML simple, open source.
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗Un site statique (HTML + JS, sans build ni dépendance) en trois pages pour les élections à la 26ᵉ Knesset du 27 octobre 2026 :
index.html) : l'hémicycle, un simulateur de coalition (coche des partis, vois si ta coalition a la majorité, partage-la par lien), le duel Yashar vs BB et l'actualité du scrutin (titres de la presse francophone, avec un lien vers chaque article) ;resultats.html, annexe) : voix, %, seuil de 3,25 % et sièges de chaque liste tels que publiés par la Commission électorale centrale, participation heure par heure, avec la source de chaque chiffre ;analyse.html) : ce que chaque famille politique (droite et ultra-orthodoxes, centre et gauche, partis arabes) gagne ou perd par rapport aux résultats officiels de 2022, parti par parti.English: a dependency-free, open-source live dashboard for Israel's 2026 Knesset election — official CEC results, bloc math and a coalition builder. Independent project, not affiliated with the CEC.
Wikipédia (voix par liste) + totaux de la CEC (recopiés ou fichier importé) + relais presse + participation
│ toutes les 30 s (Wikipédia et relais : ~3 min) (scripts/live.sh → scripts/fetch_cec.py)
▼
branche `data` : live.json ──(API GitHub ~1 min · raw 5 min)──► pages (GitHub Pages) ── recalculent les sièges (js/seats.js)
flux RSS de presse ──(même boucle, toutes les ~10 min)──► branche `news` : news.json ──► « À lire » (accueil)
Structure : index.html, resultats.html, analyse.html ; css/site.css (styles communs) ; js/common.js (données, modèle dérivé, menu, pied de page, thème, pastille « page actualisée ») ; js/seats.js (Bader-Ofer) ; js/compare.js + js/data2022.js (comparaison 2022) ; scripts/ (collecteurs Python/bash) ; deploy/jetson/ (collecteur sur un Jetson) ; tests/. Voir CLAUDE.md pour le détail, les décisions et les défauts connus.
data (l'API GitHub et raw.githubusercontent.com autorisent le CORS). La page lit les deux et garde la plus récente : l'API GitHub répond en ~1 min mais est limitée à 60 requêtes/h/IP (la page s'en détache avant d'être bloquée) ; raw garde 5 min en cache. Pour du vrai temps réel, il faudrait un petit relais sans cache (Cloudflare Worker).tests/seats.test.mjs).Les flux RSS des médias n'envoient pas d'en-tête CORS : la page ne peut pas les lire. Le collecteur (scripts/live.sh, toutes les ~10 min) lance scripts/fetch_news.py ; .github/workflows/news.yml fait la même chose, mais GitHub ne déclenche ses exécutions planifiées que très irrégulièrement (une seule en ~20 h sur ce dépôt) : c'est un filet de secours, qu'on peut aussi lancer à la main (Run workflow). fetch_news.py lit Google Actualités (recherche en français) et les flux « Moyen-Orient » du Monde, de France 24 et de RFI, puis publie news.json sur la branche orpheline news (force-push : l'historique ne grossit pas). La page le lit via raw.githubusercontent.com ; data/news.json, un instantané versionné, sert de repli.
MEDIA dans le script, à compléter au besoin ; ni sites d'opinion ou confessionnels, ni médias d'État étrangers), titres parlant d'Israël (et d'un scrutin pour les flux généralistes), 4 jours au plus, 3 titres par média au maximum.python3 -I scripts/fetch_news.py --out news.json.La CEC publie la participation toutes les ~2 h sans flux lisible. Le collecteur lit le live-blog de NBC News, qui cite chaque relevé de la CEC (heure + chiffre + comparaison 2022) dans un JSON structuré, ~1 h 30 après l'heure de référence. Le parseur est volontairement strict (mention de la CEC et de la participation, heure locale, plage 07:00–22:00, chiffre qui ne recule pas) : en cas de doute il ignore l'entrée. source.fetch.turnout de live.json dit si la lecture a marché. Un relevé saisi à la main dans manual.json prévaut pour la même heure.
Le site de la CEC protège ses fichiers par un défi anti-bot (AWS WAF : réponse HTTP 202 vide avec x-amzn-waf-action: challenge) que seul un vrai navigateur passe ; le projet ne le contourne pas et n'interroge plus son site (CEC_POLL=1 scripts/live.sh pour réessayer : en-tête honnête, pause de 45 s doublée jusqu'à 10 min en cas de défi). On lit donc le tableau national sur le site de la CEC dans un navigateur et on le recopie :
python3 -I scripts/cec_manual.py --as-of 23:40 --eligible 7000000 --voters 1500000 --valid 1480000 \
likud=380000 yashar=350000 together=190000 ... # identifiants de PARTIES (js/common.js) ou lettres de vote
git diff data/manual.json && git commit -am "Totaux CEC (saisie manuelle)" && git push
python3 -I scripts/cec_manual.py --clear # retire la saisie
L'assistant écrit la clé cec de manual.json (le reste du fichier n'est pas touché) et refuse, sans rien écrire, une liste inconnue, un total incohérent ou une somme des listes hors de 85–100 % des bulletins valides. Le collecteur relit le fichier depuis main à chaque tour (~30 s) et n'en tient compte que si la saisie est plus avancée que le dernier relevé obtenu (fichier importé, ou lecture du site avec CEC_POLL=1) et pas plus ancienne que lui (une nouvelle saisie peut corriger la précédente). La page dit alors d'où viennent les voix : « totaux de la CEC, recopiés depuis son tableau (relevé de …, heure d'Israël) ». Les sièges restent estimés (Bader-Ofer) ; il n'y a pas de saisie des sièges officiels.
data/manual.jsonLa participation peut être saisie ou corrigée dans data/manual.json (une PR suffit — le collecteur relit ce fichier à chaque tour, sans redéploiement), ainsi que les totaux de la CEC (clé cec, voir plus haut). Les identifiants de parti sont ceux de PARTIES dans js/common.js (likud, yashar, together, democrats, yb, shas, otzma, utj, rzp, raam, joint, reservists…).
python3 -m http.server 8765 # puis http://localhost:8765
?demo=1 (dépouillement partiel), ?demo=final (résultat final) : chiffres simulés pour tester l'interface.python3 scripts/fetch_cec.py --out data/live.json --manual data/manual.json : un relevé à la main.scripts/live.sh 20000 30 : boucle de collecte qui publie sur la branche data (nécessite les droits de push).Le soir du scrutin la CEC a protégé ses fichiers par un défi anti-bot (AWS WAF : HTTP 202, x-amzn-waf-action: challenge). Le projet ne le contourne pas et le collecteur n'interroge plus son site. Deux moyens légitimes :
scripts/import_csv.sh : il retrouve le CSV le plus récent de ~/Downloads, affiche un résumé (communes, bulletins valides, premières listes), refuse un fichier qui n'est pas de la CEC et demande confirmation avant de publier (--dry : résumé seulement). Les autres collecteurs adoptent ces chiffres s'ils sont plus avancés.scripts/cec_manual.py).--peer).L'API MediaWiki est faite pour les robots : le collecteur s'identifie (User-Agent avec l'adresse du dépôt) et fait 3 petites requêtes en série toutes les ~3 min (liste des sections, section « Results », en-tête de l'article). Il lit le modèle {{Election results}} : voix brutes des listes, bulletins valides et nuls, inscrits, puis, dans l'en-tête, le pourcentage d'urnes dépouillées et l'heure du relevé. Les bénévoles de Wikipédia recopient le tableau de la CEC avec un retard d'environ une heure et ont déjà inversé le nom de deux listes minuscules : le collecteur ne reprend donc que les 15 listes suivies par leur nom et regroupe le reste en « autres listes ».
parse_wiki) : tableau complet (≥ 30 listes), somme des listes = bulletins valides (0,5 %), 11 listes principales retrouvées, reste des petites listes < 4 % ; sinon le relevé est rejeté. Une relecture qui perd plus de 2 % des bulletins valides est écartée (vandalisme, tableau en chantier) ; une petite correction est suivie.Le collecteur lit toutes les ~3 min la projection de sièges de The Petek (agrégateur indépendant qui reprend le dépouillement de la CEC ; robots.txt : tout autorisé ; en-tête honnête) et la publie sous la clé press de live.json. La page ne l'utilise que si elle est plus avancée que les totaux CEC disponibles (bulletins valides comptés), ou à défaut de tout total CEC ; elle est toujours étiquetée « non officiel · relais presse », et le tableau des voix reste réservé à la CEC. Le relais est strict (liste inconnue, sièges ≠ 120 → rejeté) ; un net recul du dépouillement (plus de 2 % de bulletins en moins) est écarté, une petite correction de la source est suivie.
main / root.REPO en haut de js/common.js.nohup scripts/live.sh 30000 30 > live.log 2>&1 & # ~8 h, un relevé toutes les 30 s
Elle publie live.json sur la branche orpheline data (force-push : l'historique ne grossit pas) et relit data/manual.json sur main à chaque tour.node tests/seats.test.mjs # Bader-Ofer : reproduit les 120 sièges de 2022
node tests/compare.test.mjs # comparaison 2022 (camps, fusions, écarts)
node tests/common.test.mjs # validation du JSON du collecteur, choix de la source des sièges
python3 -I -m unittest discover tests # collecteur CEC, relais presse, saisie manuelle, actualités
PARTIES (js/common.js) et GROUPS (js/compare.js) ; les correspondances 2022 → 2026 (fusions, scissions) sont expliquées ligne par ligne sur la page d'analyse.MIT.