diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..ea1472e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+output/
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..7079371
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,11 @@
+generate:
+ python3 generate.py
+ cp static/* output/
+
+clean:
+ rm output/*
+
+install:
+ rsync -arvP --delete-after output/ proxy.adm.ynerant.fr:/var/www/apaisement/
+
+all: clean generate install
diff --git a/data.json b/data.json
new file mode 100644
index 0000000..a23e4ed
--- /dev/null
+++ b/data.json
@@ -0,0 +1,81 @@
+[
+ {
+ "index": 0,
+ "subtitle": "Allocution présidentielle",
+ "events": [
+ {
+ "description": "Emmanuel Macron s'exprime à 20h devant les Français⋅es. Il fixe un cap de 100 jours pour appaiser le pays.",
+ "media": [
+ {
+ "type": "youtube",
+ "code": "AJCXYPNkqX8"
+ }
+ ]
+ },
+ {
+ "description": "Emmanuel Macron chante des chants pyrénéens avec une association d'extrême droite à Paris. Cette association avait été financée à hauteur de 40 000 € par le Ministère de la Culture.",
+ "media": [
+ {
+ "type": "video",
+ "link": "https://video.twimg.com/ext_tw_video/1648244643618750465/pu/vid/1280x720/zbBImqSU23HYIdXy.mp4",
+ "source_text": "Twitter, @NicolasBoutin11",
+ "source_url": "https://twitter.com/NicolasBoutin11/status/1648245356042256384"
+ },
+ {
+ "type": "link",
+ "link": "https://www.liberation.fr/checknews/emmanuel-macron-a-t-il-chante-dans-la-rue-avec-une-asso-proche-de-lultradroite-apres-son-allocution-televisee-20230418_TPTXITMBIJE23ANEFEQCSCVLAM/",
+ "text": "CheckNews : Emmanuel Macron a-t-il chanté dans la rue avec une asso proche de l’ultradroite après son allocution télévisée ?"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "index": 1,
+ "subtitle": "La faute aux Maghrébin⋅es",
+ "events": [
+ {
+ "description": "Bruno Le Maire affirme que l'argent de l'État part au Maghreb.",
+ "url": null,
+ "image": null
+ }
+ ]
+ },
+ {
+ "index": 2,
+ "subtitle": "L'Alsace se rebèle",
+ "events": [
+ {
+ "description": "Macron hué à Muttersholtz et à Sélestat.",
+ "url": null,
+ "image": null
+ },
+ {
+ "description": "Le député LFI Emmanuel Fernandes baîlloné par le 49§3 devant Macron.",
+ "url": null,
+ "image": null
+ },
+ {
+ "description": "La nouvelle devise du pays selon Véran : « Travail, Famille, Patrie Ordre, Progrès",
+ "url": null,
+ "image": null
+ }
+ ]
+ },
+ {
+ "index": 3,
+ "subtitle": "Les casseroles classifiées comme armes",
+ "events": [
+ {
+ "description": "La préfecture de l'Hérault interdit le port d'objets sonores portatifs.",
+ "url": null,
+ "image": null
+ },
+ {
+ "description": "Le député LFI Sébastien Rome remet à Macron un livre sur la Résistance dans la région",
+ "image": null,
+ "url": null
+ }
+ ]
+ }
+]
diff --git a/generate.py b/generate.py
new file mode 100755
index 0000000..b627d47
--- /dev/null
+++ b/generate.py
@@ -0,0 +1,28 @@
+#!/usr/bin/env python3
+
+from datetime import date, timedelta
+import json
+
+from jinja2 import Environment, FileSystemLoader
+
+
+BASE_DATE = date(2023, 4, 17)
+
+def to_date(offset: int, date_format="%d/%m/%Y"):
+ return (BASE_DATE + timedelta(days=offset)).strftime(date_format)
+
+
+def generate():
+ with open('data.json') as f:
+ data = json.load(f)
+
+ env = Environment(loader=FileSystemLoader("templates/"))
+ env.filters['to_date'] = to_date
+ template = env.get_template("template.html.j2")
+
+ with open('output/index.html', 'w') as f:
+ f.write(template.render(data=data))
+
+
+if __name__ == '__main__':
+ generate()
diff --git a/index.html b/index.html
deleted file mode 100644
index 4e6bfb5..0000000
--- a/index.html
+++ /dev/null
@@ -1,83 +0,0 @@
-
-
-
-
- Le pays est-il apaisé ?
-
-
-
-
-
-
-
-
-
Le pays est-il apaisé ? NON
-
-
-
-
-
- Jour 3/100
-
-
- Cette page est en construction, et a vocation à documenter l'ensemble des étapes de l'apaisement.
-
-
-
-
-
-
-
-
-
- Emmanuel Macron chante des chants pyrénéens avec des personnes d'extrême droite dans Paris.
-
-
-
-
-
-
-
-
-
-
- Bruno Le Maire dit que l'argent de l'État part au Maghreb.
-
-
-
-
-
-
-
-
-
-
- Emmanuel Macron hué comme jamais à Muttersholtz et à Sélestat, en Alsace. Emmanuel Fernandes baîlloné par le 49§3. La CGT coupe le courant. Communication désastreuse.
- Olivier Véran dévoile la nouvelle devise du pays : « Travail, Famille, Patrie Ordre, Progrès »
-
-
-
-
-
-
-
-
-
-
- Casseroles interdites au rassemblement à Ganges, dans l'Hérault.
-
-
-
-
-
-
-
-
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..915b63c
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1 @@
+Jinja2~=3.1.2
diff --git a/theme.js b/static/theme.js
similarity index 100%
rename from theme.js
rename to static/theme.js
diff --git a/templates/template.html.j2 b/templates/template.html.j2
new file mode 100644
index 0000000..fe2c3be
--- /dev/null
+++ b/templates/template.html.j2
@@ -0,0 +1,76 @@
+
+
+
+
+ Le pays est-il apaisé ?
+
+
+
+
+
+
+
+
+
+
Le pays est-il apaisé ? NON
+
+
+
+
+
+ Jour 3/100
+
+
+ Cette page est en construction, et a vocation à documenter l'ensemble des étapes de l'apaisement.
+