Skip to content

Commit d4024bf

Browse files
committed
refactor: migliora la documentazione e la struttura dello script di download dei dati
1 parent c8882b6 commit d4024bf

1 file changed

Lines changed: 22 additions & 4 deletions

File tree

scripts/download_data.sh

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,32 @@
11
#!/bin/bash
22

3-
set -x
4-
set -e
5-
set -u
6-
set -o pipefail
3+
# Script per scaricare e processare i dati delle iniziative da firmereferendum.giustizia.it
4+
# Scarica i dati JSON, li converte in JSONL e aggiorna la timeline delle firme
75

6+
# Configurazione bash per errori e debug
7+
set -x # stampa ogni comando eseguito
8+
set -e # esce se un comando fallisce
9+
set -u # esce se usa variabili non definite
10+
set -o pipefail # esce se un comando in una pipe fallisce
11+
12+
# Ottiene il percorso della directory dello script
813
folder="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
914

15+
# Scarica i dati JSON dall'API ufficiale del Ministero della Giustizia
16+
# Il parametro v= sembra essere un timestamp per cache-busting
1017
curl -s "https://firmereferendum.giustizia.it/referendum/api-portal/iniziativa/public?v=1751271726271" \
1118
-H "Accept: application/json" \
1219
-H "User-Agent: Mozilla/5.0 (compatible; referendum-astro-bot/1.0)" >"${folder}"/../data/source.json
1320

21+
# Converte il JSON in JSONL (una riga per iniziativa), appiattisce la struttura e ordina per ID
1422
<"${folder}"/../data/source.json jq -c '.content[]' | mlr --jsonl flatten then sort -tr id >"${folder}"/../data/source.jsonl
23+
24+
# Crea variabile con data in formato YYYY-MM-DD per tracciare quando sono stati raccolti i dati
25+
check_date=$(date +%Y-%m-%d)
26+
27+
# Aggiorna la timeline delle firme: filtra solo iniziative in raccolta firme (stato=2),
28+
# estrae ID e numero sostenitori, aggiunge la data corrente
29+
mlr --jsonl filter '${idDecStatoIniziativa.id}==2' then cut -f id,sostenitori then put '$data="'"${check_date}"'"' "${folder}"/../data/source.jsonl >>"${folder}"/../data/time_line.jsonl
30+
31+
# Rimuove duplicati dalla timeline e riordina per data e ID
32+
mlr -I --jsonl uniq -a then sort -t data,id "${folder}"/../data/time_line.jsonl

0 commit comments

Comments
 (0)