Re: [opendatasicilia] Uno script per scaricare i dati da soldipubblici

Posted by pablo persico on
URL: http://opendatasicilia.195.s1.nabble.com/opendatasicilia-Uno-script-per-scaricare-i-dati-da-soldipubblici-tp5657p5668.html

Buonasera e scusate l'ora, 
dunque Andrea sei un mito! La tenacia e la determinazione al netto della straordinaria conoscenza affiancata ad una velocità di elaborazione  della soluzione e della risposta è qualcosa che in vita mia non ho mai visto! il bello è che sembri divertirti quindi ho deciso; quando mio figlio avrà dubbi su chi vuole essere da grande senza mezzi termini gli dirò "sii Andrea Borruso!" :-)

chiacchiere a parte, tutto giusto! e tutto risolto..... Andrea si possono filtrare i dati in modo che appaiano solo quelli con un valore?

cosa ne farò? semplicissimo: il link ai due file li caricherò sul portale Ckan degli open data dell'Ente dove lavoro. Avrò così il dataset aggiornato settimanalmente (così come previsto da spesapubblica.gov.it) delle spese dell'Ente senza muovere un dito. (ma dopo averti fatto penare giorni). Solo per completezza segnalo che i dati di spesapubblica.gov.it sono rilasciati sotto licenza cc-by 3.0 e che non essendo il portale federato con datigovit è coerente per un portale open data Ckan con dcatapit installato (e quindi federato con datigovit) pubblicare un dataset del genere perché rispetterebbe il principio "once only". Piersoft docet

Infine un colossale e madornale errore lo hai fatto, continui a chiamarmi Paolo quando i miei genitori poco meno di quarant'anni fa hanno fatto un casino per farmi battezzare Pablo!!! :-))

per completezza incollo qui ogni cosa: 
lo script  personalizzato dei dati dell'Ente di mio interesse
#!/bin/bash
### requisiti ###
# httpie
# jq
# csvkit
### requisiti ###
### 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)}]'
| \
tee
"$cartella"/02_"cmna".json | /usr/bin/in2csv -I -f json >"$cartella"/01_"cmna".csv

il file crontab la cui modifica è solo riportata sull'ultima riga
SHELL=/bin/bash
PATH
=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO
=root

# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
0 4 */7 * *  root /var/www/html/soldipubblici/getspscript.sh > /dev/null 2>&1

infine alcune righe del log di crontab dove per provare la funzionalità ho accorciato a ogni 5 minuti il cron
Apr 20 23:50:01 dbvtiger04 CROND[13756]: (root) CMD (/var/www/html/soldipubblici/getspscript.sh > /dev/null 2>&1)
Apr 20 23:55:01 dbvtiger04 CROND[13781]: (root) CMD (/var/www/html/soldipubblici/getspscript.sh > /dev/null 2>&1)
Apr 21 00:00:01 dbvtiger04 CROND[13806]: (root) CMD (/var/www/html/soldipubblici/getspscript.sh > /dev/null 2>&1)
Apr 21 00:05:01 dbvtiger04 CROND[13831]: (root) CMD (/var/www/html/soldipubblici/getspscript.sh > /dev/null 2>&1)
Apr 21 00:10:01 dbvtiger04 CROND[13856]: (root) CMD (/var/www/html/soldipubblici/getspscript.sh > /dev/null 2>&1)
Apr 21 00:15:01 dbvtiger04 CROND[13898]: (root) CMD (/var/www/html/soldipubblici/getspscript.sh > /dev/null 2>&1)

Grazie ancora!


Il giorno venerdì 20 aprile 2018 16:28:32 UTC+2, Andrea Borruso ha scritto:

Ciao Paolo,

2018-04-19 18:05 GMT+02:00 pablopers <[hidden email]>:

Relativamente al Cron mi sono bloccato; tra il file crontab, le cartelle cron.daily cron.week etc,  cron.d etc etc. 
ho risolto parzialmente inserendo la stringa in /var/spool/cron/root  evitando l'utente nella stringa e pare che il cron parta ma i file se li crea sono vuoti, per contro  il log di cron sembra apposto a questo punto forse i permessi potrebbero essere la causa nel senso che il file viene creato ma non scritto. magari ho detto una scemenza.
grazie mille Andrea per la smisurata pazienza, ci aggiorniamo

penso di avere trovato il problema: se si lancia http da cron, bisogna aggiungere l’opzione --ignore-stdin.

Quindi

/usr/local/bin/http -f POST <a href="http://soldipubblici.gov.it/it/ricerca" target="_blank" rel="nofollow" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fsoldipubblici.gov.it%2Fit%2Fricerca\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNFkqFvciSAvS5yY53q1PIKD4WWF6Q&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fsoldipubblici.gov.it%2Fit%2Fricerca\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNFkqFvciSAvS5yY53q1PIKD4WWF6Q&#39;;return true;">http://soldipubblici.gov.it/it/ricerca

diventa

/usr/local/bin/http --ignore-stdin -f POST <a href="http://soldipubblici.gov.it/it/ricerca" target="_blank" rel="nofollow" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fsoldipubblici.gov.it%2Fit%2Fricerca\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNFkqFvciSAvS5yY53q1PIKD4WWF6Q&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fsoldipubblici.gov.it%2Fit%2Fricerca\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNFkqFvciSAvS5yY53q1PIKD4WWF6Q&#39;;return true;">http://soldipubblici.gov.it/it/ricerca

Facci sapere

--
___________________

Andrea Borruso
website: <a href="https://medium.com/tantotanto" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://www.google.com/url?q\x3dhttps%3A%2F%2Fmedium.com%2Ftantotanto\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGZVxcQ3b_26Tt_tclvazQirNPHSA&#39;;return true;" onclick="this.href=&#39;https://www.google.com/url?q\x3dhttps%3A%2F%2Fmedium.com%2Ftantotanto\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGZVxcQ3b_26Tt_tclvazQirNPHSA&#39;;return true;">https://medium.com/tantotanto
38° 7' 48" N, 13° 21' 9" E, EPSG:4326
___________________

"cercare e saper riconoscere chi e cosa,
 in mezzo all’inferno, non è inferno, 
e farlo durare, e dargli spazio"

Italo Calvino

--
Sito: http://opendatasicilia.it
Facebook: https://www.facebook.com/groups/opendatasicilia/
twitter: http://twitter.com/opendatasicilia
Gruppo Telegram: https://t.me/opendatasicilia
Slack: http://opendatasicilia.it/slack/
---
Hai ricevuto questo messaggio perché sei iscritto al gruppo "opendatasicilia" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a [hidden email].
Per postare in questo gruppo, invia un'email a [hidden email].
Visita questo gruppo all'indirizzo https://groups.google.com/group/opendatasicilia.
Per visualizzare questa discussione sul Web, visita https://groups.google.com/d/msgid/opendatasicilia/3087a7d3-cfbe-4fd8-82f7-1cdc255b3bfd%40googlegroups.com.
Per altre opzioni visita https://groups.google.com/d/optout.