|
1 | 1 | #!/bin/bash |
2 | 2 |
|
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 |
7 | 5 |
|
| 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 |
8 | 13 | folder="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" |
9 | 14 |
|
| 15 | +# Scarica i dati JSON dall'API ufficiale del Ministero della Giustizia |
| 16 | +# Il parametro v= sembra essere un timestamp per cache-busting |
10 | 17 | curl -s "https://firmereferendum.giustizia.it/referendum/api-portal/iniziativa/public?v=1751271726271" \ |
11 | 18 | -H "Accept: application/json" \ |
12 | 19 | -H "User-Agent: Mozilla/5.0 (compatible; referendum-astro-bot/1.0)" >"${folder}"/../data/source.json |
13 | 20 |
|
| 21 | +# Converte il JSON in JSONL (una riga per iniziativa), appiattisce la struttura e ordina per ID |
14 | 22 | <"${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