Compare commits

...

4 Commits

Author SHA1 Message Date
Gabriele De Rosa a1e212202d Minor 2021-11-26 17:28:24 +01:00
Gabriele De Rosa b3acda0edd Change intro 2021-11-26 17:11:22 +01:00
Gabriele De Rosa cdc0f990b4
Merge pull request #5 from derogab/dev
Use Alpine as docker base image
2021-11-26 16:03:40 +01:00
Gabriele De Rosa 39fc0be135 Add wkhtmltopdf requirements on Alpine
- Install ttf-liberation 
- Install qt5-qtwebkit
2021-11-26 15:04:17 +01:00
3 changed files with 29 additions and 18 deletions

View File

@ -9,7 +9,7 @@ RUN apk update --no-cache \
&& apk add --no-cache \
tzdata \
python3 py3-pip py3-numpy py3-pandas py3-matplotlib \
wkhtmltopdf \
ttf-liberation qt5-qtwebkit wkhtmltopdf \
# Set UTC as timezone
&& ln -snf /usr/share/zoneinfo/Europe/Rome /etc/localtime \
# Remove tmp files

View File

@ -33,33 +33,34 @@
</head>
<body>
<div class="container mt-2 pt-2 px-xl-5" id="content">
<h1>Quando torneremo alla normalità?</h1>
<h1>🇮🇹 ITA vs. COVID-19 🦠</h1>
<p>
La domanda non ha una risposta precisa.
Non è ancora chiaro
quale sia la percentuale della popolazione che deve essere vaccinata per ottenere la cosidetta
<b>immunità di gregge</b> o di massa dal virus SARS-Cov-2.
Realisticamente, questo numero si aggira intorno all'<b>80% della popolazione</b>
ovvero circa 48 milioni di persone.
Questo bot è nato durante la pandemia di COVID-19 e, nelle sue prime 2 versioni, mostrava l'andamento della
vaccinazione in Italia, calcolando una stima sul tempo mancante prima del raggiungimento della cosidetta
<i>immunità di gregge</i> o di massa dal virus SARS-Cov-2.
</p>
<p>
Con il passare del tempo, l'evoluzione della situazione pandemica e l'aumentare della popolazione vaccinata,
il calcolo di questa stima non rappresenta più un dato utile.
Per questo il bot è stato aggiornato e nella versione corrente mostra l'<b>andamento della vaccinazione in Italia</b>
in relazione a ciclo vaccinale primario e dosi booster aggiuntive.
</p>
<h3>Analisi dei dati della campagna vaccinale</h3>
<p class="mb-2">
La stima qui effettuata indica il tempo che mancherebbe al raggiungimento
dell'immunità di gregge qualora si tenesse il ritmo degli ultimi 7 giorni. <br />
Le informazioni e i grafici qui presenti sono stati raccolti a partire dalla repository ufficiale pubblica
della pubblica amministrazione.
<br />
</p>
<hr>
<div class="text-center">
Continuando di questo passo, raggiungeremo l'immunità di gregge il <br />
Le persone che in Italia hanno completato almeno un ciclo vaccinale sono <br />
<span class="text-bigger">
<!-- hitDate -->
<span class="d-none d-sm-inline">
<!-- hitHour -->
</span>
<!-- totalVaccinations -->
</span> <br />
<span style="position: relative; top: -5px">ovvero fra</span> <br />
<span style="position: relative; top: -5px">tra le quali quelle che hanno già effettuato la (terza) dose booster sono</span> <br />
<span class="text-bigger" style="position: relative; top: -15px;">
<!-- daysRemaining -->
giorni.
<!-- totalVaccinationsBooster -->
</span>
</div>
<hr>
@ -70,6 +71,13 @@
Dal 21 maggio 2021 sono mostrati due differenti grafici per differenziare
le prime e le seconde dosi.
</p>
<p class="pt-2 notes">
Da novembre 2021 i due grafici mostrano rispettivamente i dati del primo ciclo vaccinale e della dose booster.
</p>
</div>
<!-- Use twemoji -->
<script src="https://twemoji.maxcdn.com/v/latest/twemoji.min.js" crossorigin="anonymous"></script>
<script>twemoji.parse(document.body);</script>
</body>
</html>

3
bot.py
View File

@ -67,6 +67,7 @@ def generate(df, target, template):
# Get data from df
totalVaccines = sum(df[target])
totalVaccinesBooster = totalVaccines
lastWeekData = df.loc[df.index > df.index[-1] - td(days=7)]
vaccinesPerDayAverage = sum(lastWeekData[target]) / 7
remainingDays = (HIT - totalVaccines) / vaccinesPerDayAverage
@ -101,6 +102,8 @@ def generate(df, target, template):
for line in f.read().splitlines():
if "<!-- totalVaccinations -->" in line:
line = f"{totalVaccines}"
elif "<!-- totalVaccinationsBooster -->" in line:
line = f"{totalVaccinesBooster}"
elif "<!-- typeVaccinations -->" in line:
line = f"{first_or_second}"
elif "<!-- totalVaccinationsPerc -->" in line: