Skip to content

Instantly share code, notes, and snippets.

@pablopers
Last active May 3, 2018 05:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pablopers/a10e86987b2968f7460b21616842106f to your computer and use it in GitHub Desktop.
Save pablopers/a10e86987b2968f7460b21616842106f to your computer and use it in GitHub Desktop.
Uno script bash di esempio, che scarica i dati da http://soldipubblici.gov.it/ per la Città Metropolitana di Napoli e li trasforma in CSV e JSON. Costruito a partire da http://bit.ly/2FkRaWo
#!/bin/bash
### Info ###
# i file correttamente importati e filtrati sono 01_cmna.csv e 01_cmna.json #
### info ###
### requisiti ###
# httpie
# jq
# csvkit
### requisiti ###
set -x
### leggimi ###
# In questo esempio, a partire dal codice ente del Città Metropolitana di Napoli (`800000720'), vengono scaricati i dati
# sulle spese fatte da questa PA.
### leggimi ###
# scegliere e impostare la cartella di output #
cartella="/var/www/html/soldipubblici"
# inserire codice dell'ente #
codente="800000720"
# inserire il nome dell'ente #
namente="Citta+metropolitana+di+napoli"
/usr/bin/http --ignore-stdin -f POST http://soldipubblici.gov.it/it/ricerca x-requested-with:XMLHttpRequest codicecomparto='PRO' codiceente=''"$codente"'' chi=''"$namente"'' | \
/usr/bin/jq '[.data|.[]|{codice_siope,descrizione_codice,descrizione_ente,idtable,cod_ente,anno,periodo,codice_gestionale,
imp_uscite_att:(if .imp_uscite_att == null then null else .imp_uscite_att|tonumber/100 end),
data_di_fine_validita,
importo_2013:(if .importo_2013 == null then null else .importo_2013|tonumber/100 end),
importo_2014:(if .importo_2014 == null then null else .importo_2014|tonumber/100 end),
importo_2015:(if .importo_2015 == null then null else .importo_2015|tonumber/100 end),
importo_2016:(if .importo_2016 == null then null else .importo_2016|tonumber/100 end),
importo_2017:(if .importo_2017 == null then null else .importo_2017|tonumber/100 end)}]' | \
# trasformiamo il json importato in csv #
tee "$cartella"/00_cmna.json | /usr/bin/in2csv -I -f json >"$cartella"/00_cmna.csv
# filtriamo il csv in modo che elimini gli importi non valorizzati #
<"$cartella"/00_cmna.csv csvgrep -c "imp_uscite_att,importo_2013,importo_2014,importo_2015,importo_2016,importo_2017" -r "^$" -i >"$cartella"/01_cmna.csv
# trasformiamo il csv filtrato in json #
<"$cartella"/01_"cmna".csv csvjson -I | jq . >"$cartella"/01_"cmna".json
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment