Se puntiamo a un CSV pubblicato su GitHub, il server risponde con
HTTP/2 302
date: Tue, 19 Jan 2021 07:54:53 GMT
content-type: text/html; charset=utf-8
e il client che lo legge quindi non lo interpreta (di solito) come un CSV.
Per superare questo problema, possiamo usare una delle tante alternative al glorioso RawGit (non più funzionante).
Una è jsDelivr.
Ecco un esempio d'uso. A partire da un CSV con questo URL:
https://github.com/italia/covid19-opendata-vaccini/raw/master/dati/somministrazioni-vaccini-summary-latest.csv
lo si trasforma in sintassi jsDelivr
https://cdn.jsdelivr.net/gh/italia/covid19-opendata-vaccini@master/dati/somministrazioni-vaccini-summary-latest.csv
e se si lancia ad esempio
curl -I "https://cdn.jsdelivr.net/gh/italia/covid19-opendata-vaccini@master/dati/somministrazioni-vaccini-summary-latest.csv"
si ottiene dal server che è un text/csv
HTTP/2 200
date: Tue, 19 Jan 2021 07:58:33 GMT
content-type: text/csv; charset=utf-8
In questo modo la gran parte dei client lo sapranno intepretare correttamente e gestire come tabella.
Anche un browser interpreterà diversamente il file:
- con l'URL nativo, il file verrà visualizzato nel browser (click qui, per provare);
- con l'URL di jsDelivr, ne verrà proposto il download (click qui, per provare).
Quando si apre la pagina relativa a un file pubblicato su GitHub - ad esempio questo CSV - l'URL non è quello del file grezzo, ma quello della pagina web che ne mostra un'anteprima.
Ha questo schema:
https://github.com/pcm-dpc/COVID-19/blob/master/dati-regioni/dpc-covid19-ita-regioni-latest.csv
Un altro URL associato allo stesso file, è quello che si può ricavare facendo click con il desto del mouse su Raw
e poi copiando l'URL:
Ha uno schema diverso da quello precedente, ma ancora una volta non è quello del file grezzo, ma soltanto un puntamento a questo.
https://github.com/pcm-dpc/COVID-19/raw/master/dati-regioni/dpc-covid19-ita-regioni-latest.csv
Per ricavare l'indirizzo "vero" basta fare click con il sinistro su Raw
, aspettare che il browser mostri l'output e leggere l'URL. Lo schema è questo:
https://raw.githubusercontent.com/pcm-dpc/COVID-19/master/dati-regioni/dpc-covid19-ita-regioni-latest.csv
È un indirizzo in cui è abilitato il Cross-Origin Resource Sharing (CORS), per il quale un'applicazione Web dispone dell'autorizzazione per accedervi nonostante sia pubblicato su un'origine diversa.
Con questo URL potrò ad esempio usare un file pubblicato su GitHub, per creare un grafico su RAWGraphs.
L'URL "vero" di un file su GitHub, si può ricavare anche a partire dal secondo di questi URL, leggendo la risposta del server. Con curl
ad esempio si può fare in questo modo:
curl -I "https://github.com/pcm-dpc/COVID-19/raw/master/dati-regioni/dpc-covid19-ita-regioni-latest.csv" | grep 'location:'
In output si avrà:
location: https://raw.githubusercontent.com/pcm-dpc/COVID-19/master/dati-regioni/dpc-covid19-ita-regioni-latest.csv