Open aborruso opened 7 years ago
Buongiorno, ci sono avanzamenti su questo?
Grazie
Ciao @marciuz anche qui dettaglio un po'.
Il mio riferimento è la pagina Sviluppatori in cui leggo:
Questo metodo permette l'interrogazione dell'indice di tutti i record, tramite la chiamata http://www.dati.gov.it/api/3/action/package_list per poi fare interrogazioni puntuali ai singoli record con la chiamata http://www.dati.gov.it/api/3/action/package_show?id={id-dataset}.
Per esempio, dalla lista dei dataset per accedere ai metadati del singolo dataset ,può essere utilizzata la chiamata: http://www.dati.gov.it/api/3/action/package_show?id=personale-provinciale-rapporto-lavoro-non-tempo-indeterminato
Quindi parto dalla package_list in cui ad esempio trovo elencato immagini-satellitari-spot-5-scene-pancromatiche
e costruisco (come da note di sopra) l'URL:
http://www.dati.gov.it/api/3/action/package_show?id=immagini-satellitari-spot-5-scene-pancromatiche
Questo mi restituisce:
{
"help": "Return the metadata of a dataset (package) and its resources. :param id: the id or name of the dataset :type id: string",
"success": true,
"error": {
"__type": "Not Found Error",
"message": "Not Found"
}
}
La query di sopra è by id
, l'id di questo dataset è 047b2dd8-8ea2-4bda-98e3-cff267db0332
e se apro l'URL via id
http://www.dati.gov.it/api/3/action/package_show?id=047b2dd8-8ea2-4bda-98e3-cff267db0332
non ho alcun problema.
C'è da scrivere qualcosa di diverso nella pagina sviluppatori?
Grazie
Ciao @aborruso ,
in teoria dovrebbero funzionare entrambe le chiamate, quella con il name e quella per id (che poi è un uuid, anche se le amministrazioni a volte non lo propagano in fase di harvesting, ma questo è un altro problema).
Che non funzioni per alcuni casi sembra un bug, perché la logica delle api CKAN - come ben sai - è 1) package_list, con lista dei name 2) package_show con parametro id, dove ID può essere il name o l'id.
Non credo neppure sia un problema di cache: la lista package_list non è generata in tempo reale, ma è aggiornata congiuntamente all'esecuzione dell'harvester, quindi escluderei.
Cambio la classificazione e modifico l'oggetto.
Buongiorno, ritorno su questo perché vorrei fare un'analisi sulle licenze dei dataset.
Sono partito dal download della lista https://www.dati.gov.it/api/3/action/package_list
e poi sono andato in loop per ognuno degli elementi via http://www.dati.gov.it/api/3/action/package_show?id=
.
Ci sono però dei dataset presenti in lista (due esempi sono aree-verdi
e beni-culturali
) che restituiscono "Not Found"
.
Se fosse disponibile la lista degli id
otre a quella dei name
, penso che potrei risolvere il problema. C'è un modo per ottenere la lista degli id
dei 18000 dataset?
Grazie
@aborruso quando scrivi
La query di sopra è by id, l'id di questo dataset è 047b2dd8-8ea2-4bda-98e3-cff267db0332 e se apro l'URL via id http://www.dati.gov.it/api/3/action/package_show?id=047b2dd8-8ea2-4bda-98e3-cff267db0332 non ho alcun problema.
Posso chiederti come hai fatto ad ottenere l'id del dataset? Inoltre ora neanche la URL sopra funziona, giusto? http://www.dati.gov.it/api/3/action/package_show?id=047b2dd8-8ea2-4bda-98e3-cff267db0332
Grazie
Posso chiederti come hai fatto ad ottenere l'id del dataset? Inoltre ora neanche la URL sopra funziona, giusto? http://www.dati.gov.it/api/3/action/package_show?id=047b2dd8-8ea2-4bda-98e3-cff267db0332
Puoi usare il metodo current_package_list_with_resources
che trovi descritto qui https://www.dati.gov.it/content/sviluppatori .
A riga di comando, con jq e con le utility classiche puoi prima contare i dataset (al momento 22436)
curl "https://www.dati.gov.it/api/3/action/package_list" | jq '.result[]' | wc -l
e poi ciclare di 100 in 100 e scaricare tutti i dati
for i in {0..22400..100}; do \
curl "https://www.dati.gov.it/api/3/action/current_package_list_with_resources?limit=100&offset=$i" >./"$i".json; \
done
In output hai pure gli id (ad esempio qui).
I package elencati qui (circa 800) non erano raggiungibili al 12 Marzo.
Ho fatto qualche test a campione e la situazione non sembra cambiata.
Riporto l'elenco anche sotto.
Grazie