« Api gouv » : différence entre les versions
| (22 versions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 15 : | Ligne 15 : | ||
*[https://doc.data.gouv.fr/api/reference/ doc data gouv api] | *[https://doc.data.gouv.fr/api/reference/ doc data gouv api] | ||
[[category:Divers]] [[category:api]] | [[category:Divers]] [[category:api]] | ||
=== calendrier.api.gouv.fr === | |||
Jours fériés | |||
<syntaxhighlight lang="bash" copy> | |||
curl -s 'GET' 'https://calendrier.api.gouv.fr/jours-feries/metropole/2027.json' -H 'accept: application/json' | jq | |||
</syntaxhighlight> | |||
=== apicarto.ign.fr === | |||
Cadastre | |||
<syntaxhighlight lang="bash" copy> | |||
curl -s 'https://apicarto.ign.fr/api/cadastre/commune?code_insee=02211' | jq | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="bash" copy> | |||
code postaux | |||
curl -s 'https://apicarto.ign.fr/api/codes-postaux/communes/02290' | jq | |||
</syntaxhighlight> | |||
=== adresse.data.gouv.fr === | === adresse.data.gouv.fr === | ||
| Ligne 226 : | Ligne 243 : | ||
=== data.education.gouv.fr === | === data.education.gouv.fr === | ||
*[https://data.education.gouv.fr/pages/accueil/ data.education.gouv.fr] | |||
*[https://data.education.gouv.fr/explore/dataset/fr-en-annuaire-education/api/ education api] | |||
Obtenir les infos des établissements scolaires: | Obtenir les infos des établissements scolaires: | ||
<syntaxhighlight lang="bash" copy> | <syntaxhighlight lang="bash" copy> | ||
| Ligne 232 : | Ligne 254 : | ||
# Aide d'utilisation | # Aide d'utilisation | ||
usage() { | usage() { | ||
echo "Usage: $0 -c COMMUNE [-t TYPE_ETABLISSEMENT] [-f more|all] [-o OFFSET]" | echo "Usage: $0 -c COMMUNE [-t TYPE_ETABLISSEMENT] [-f more|all] [-o OFFSET] [-l LIMIT]" | ||
echo "Recherche des établissements scolaires via l'API de l'Éducation Nationale" | echo "Recherche des établissements scolaires via l'API de l'Éducation Nationale" | ||
echo "" | echo "" | ||
| Ligne 240 : | Ligne 262 : | ||
echo " -f more Affiche les champs de contact (mail,telephone,web) en JSON" | echo " -f more Affiche les champs de contact (mail,telephone,web) en JSON" | ||
echo " -f all Affiche TOUS les champs disponibles en JSON" | echo " -f all Affiche TOUS les champs disponibles en JSON" | ||
echo " -o OFFSET Décalage pour la pagination ( | echo " -o OFFSET Décalage pour la pagination (défaut: 0)" | ||
echo " -l LIMIT Nombre de résultats par requête (défaut: 100, max: 100)" | |||
echo " -h Affiche cette aide" | echo " -h Affiche cette aide" | ||
echo "" | echo "" | ||
echo "Exemples:" | echo "Exemples:" | ||
echo " $0 -c Paris -t lycee | echo " $0 -c Paris -t lycee -l 50" | ||
echo " $0 -c Reims -f more -o 100 -l 20" | |||
echo " $0 -c Reims -f more -o 100 | |||
exit 1 | exit 1 | ||
} | } | ||
| Ligne 254 : | Ligne 275 : | ||
commune="" | commune="" | ||
type_etablissement="" | type_etablissement="" | ||
output_mode="table" | output_mode="table" | ||
offset=0 | offset=0 | ||
limit=100 | |||
# Traitement des arguments | # Traitement des arguments | ||
while getopts ":c:t:f:o:h" opt; do | while getopts ":c:t:f:o:l:h" opt; do | ||
case $opt in | case $opt in | ||
c) commune="$OPTARG" ;; | c) commune="$OPTARG" ;; | ||
| Ligne 268 : | Ligne 290 : | ||
esac ;; | esac ;; | ||
o) offset="$OPTARG" | o) offset="$OPTARG" | ||
[[ "$offset" =~ ^[0-9]+$ ]] || { echo "Offset doit être un nombre positif" >&2; exit 1; } ;; | |||
echo " | l) limit="$OPTARG" | ||
[[ "$limit" =~ ^[0-9]+$ ]] && [ "$limit" -le 100 ] || { | |||
echo "Limit doit être un nombre entre 1 et 100" >&2; exit 1; } ;; | |||
h) usage ;; | h) usage ;; | ||
\?) echo "Option invalide: -$OPTARG" >&2; usage ;; | \?) echo "Option invalide: -$OPTARG" >&2; usage ;; | ||
| Ligne 282 : | Ligne 304 : | ||
# Encodage URL | # Encodage URL | ||
encoded_commune=$(echo "$commune" | sed 's/ /%20/g') | encoded_commune=$(echo "$commune" | sed 's/ /%20/g') | ||
where_clause="nom_commune%20like%20%27%25${encoded_commune}%25%27" | #where_clause="nom_commune%20%3D%20%22${encoded_commune}%22%20" #strictement égale | ||
where_clause="nom_commune%20like%20%27${encoded_commune}%27" # like 'paris' | |||
#where_clause="nom_commune%20like%20%27%25${encoded_commune}%25%27" # like '%paris%' | |||
[ -n "$type_etablissement" ] && { | [ -n "$type_etablissement" ] && { | ||
| Ligne 289 : | Ligne 313 : | ||
} | } | ||
# Construction de la requête API | # Construction de la requête API | ||
api_url="https://data.education.gouv.fr/api/explore/v2.1/catalog/datasets/fr-en-annuaire-education/records?where=${where_clause}&limit= | api_url="https://data.education.gouv.fr/api/explore/v2.1/catalog/datasets/fr-en-annuaire-education/records?&order_by=identifiant_de_l_etablissement&where=${where_clause}&limit=${limit}&offset=${offset}" | ||
# Affichage des paramètres de recherche | # Affichage des paramètres de recherche | ||
echo "Recherche des établissements à '$commune'" >&2 | echo "Recherche des établissements à '$commune'" >&2 | ||
[ -n "$type_etablissement" ] && echo " | [ -n "$type_etablissement" ] && echo "Filtre : type '$type_etablissement'" >&2 | ||
[ "$output_mode" = "more" ] && echo "Affichage des champs de contact" >&2 | [ "$output_mode" = "more" ] && echo "Affichage des champs de contact" >&2 | ||
[ "$output_mode" = "all" ] && echo "Affichage de tous les champs disponibles" >&2 | [ "$output_mode" = "all" ] && echo "Affichage de tous les champs disponibles" >&2 | ||
[ "$offset" -gt 0 ] && echo "Décalage des résultats : $ | [ "$offset" -gt 0 ] && echo "Décalage des résultats : $offset" >&2 | ||
[ "$limit" -ne 100 ] && echo "Nombre de résultats par page : $limit" >&2 | |||
echo "" >&2 | echo "" >&2 | ||
| Ligne 310 : | Ligne 335 : | ||
"\($offset + .key + 1)|\(.value.nom_etablissement)|\(.value.type_etablissement)|\(.value.adresse_1)|\(.value.position.lat),\(.value.position.lon)"' | \ | "\($offset + .key + 1)|\(.value.nom_etablissement)|\(.value.type_etablissement)|\(.value.adresse_1)|\(.value.position.lat),\(.value.position.lon)"' | \ | ||
while IFS='|' read -r num etablissement type adresse coord; do | while IFS='|' read -r num etablissement type adresse coord; do | ||
printf "%3d | %-30s | %-15s | %-25s | %s\n" \ | printf "%3d | %-30s | %-15s | %-25s | %s\n" \ | ||
"$num" \ | "$num" \ | ||
"$(echo "$etablissement" | cut -c -30)" \ | "$(echo "$etablissement" | cut -c -30)" \ | ||
| Ligne 331 : | Ligne 356 : | ||
mail: .value.mail, | mail: .value.mail, | ||
web: .value.web | web: .value.web | ||
} | with_entries(select(. | } | with_entries(select(.value != null))) | ||
' | ' | ||
;; | ;; | ||
| Ligne 341 : | Ligne 366 : | ||
.value | del(.datasetid, .recordid, .record_timestamp, .geometry) | | .value | del(.datasetid, .recordid, .record_timestamp, .geometry) | | ||
. + {numero: ($offset + .key + 1)} | | . + {numero: ($offset + .key + 1)} | | ||
with_entries(select(. | with_entries(select(.value != null)) | ||
) | ) | ||
' | ' | ||
| Ligne 348 : | Ligne 373 : | ||
echo "" >&2 | echo "" >&2 | ||
echo "Nombre de résultats affichés: | echo "Nombre de résultats affichés: $limit" >&2 | ||
[ "$offset" -gt 0 ] && echo "Prochain offset possible: $((offset + | [ "$offset" -gt 0 ] && echo "Prochain offset possible: $((offset + limit))" >&2 | ||
echo "Recherche terminée." >&2 | echo "Recherche terminée." >&2 | ||
</syntaxhighlight> | |||
==== Exemple ==== | |||
<syntaxhighlight lang="bash" copy> | |||
./ecole.sh -c Reims -t lycee | |||
Recherche des établissements à 'Reims' | |||
Filtre : type 'lycee' | |||
N° | Établissement | Type | Adresse | Coordonnées GPS | |||
--------------------------------------------------------------- | |||
1 | Lycée Clemenceau | Lycée | 46 avenue Georges Clemenc | 49.25073432345288,4.046330326900803 | |||
2 | Lycée professionnel Joliot-Cu | Lycée | 4 rue Joliot Curie | 49.23178325933544,4.003450480308607 | |||
3 | Lycée polyvalent Georges Bri� | Lycée | 2 rue Vauban | 49.22398519953693,4.027090434385106 | |||
4 | Lycée Sacré-Coeur | Lycée | 86 rue de Courlancy | 49.238931122233176,4.025220635034403 | |||
5 | Ecole des Métiers Artistiques | Lycée | 28 BIS RUE DE COURCELLES | 49.26107885865763,4.019019722186755 | |||
6 | Lycée professionnel Raymond K | Lycée | Allée de l'alouette | 49.24965875528182,4.058829555724916 | |||
7 | Lycée polyvalent Saint-Michel | Lycée | 39 rue Martin Peller | 49.2466954607039,4.014050539836219 | |||
8 | Lycée polyvalent François Ar | Lycée | 1 rue François Arago | 49.22940166227636,4.0064656531151535 | |||
9 | Lycée professionnel Jeanne d' | Lycée | 94 avenue de Laon | 49.26657628358237,4.026469785977506 | |||
10 | Lycée Saint-Joseph | Lycée | 177 rue des Capucins | 49.247044020034096,4.035980624193684 | |||
11 | Lycée polyvalent Saint-Jean-B | Lycée | 20 rue de Contrai | 49.25063607358897,4.037199400980221 | |||
12 | Lycée Saint-Jean XXIII | Lycée | 18 rue Andrieux | 49.25926423819655,4.035949497933112 | |||
13 | Section d'Enseignement Profess | Lycée | 2 rue Vauban | 49.22398519953693,4.027090434385106 | |||
14 | Section d'Enseignement Profess | Lycée | 39 rue MARTIN PELLER | 49.24635162125739,4.013670264788377 | |||
15 | Micro Lycée du Lycée Polyval | Lycée | 2 rue Vauban | 49.22369097053217,4.027750337502952 | |||
16 | Lycée Jean Jaurès | Lycée | 17 rue Ruinart de Brimont | 49.25832684426352,4.045500552009885 | |||
17 | Lycée professionnel Gustave E | Lycée | 34 rue de Neufchatel | 49.275232133479086,4.026901461730458 | |||
18 | Lycée Colbert | Lycée | 56 rue du Docteur Schweit | 49.282828421582906,4.024210541012452 | |||
19 | Lycée professionnel Europe | Lycée | 71 avenue de l'Europe | 49.24844732482777,4.066120515816653 | |||
20 | Lycée Marc Chagall | Lycée | 60 chaussée Saint Martin | 49.24255560070805,4.0268702906229885 | |||
21 | Lycée Roosevelt | Lycée | 10 rue Roosevelt | 49.263238315726255,4.026660366516108 | |||
22 | Lycée Libergier | Lycée | 55 rue Libergier | 49.251152445191394,4.027709929823115 | |||
23 | Section d'Enseignement Profess | Lycée | 1 RUE FRANCOIS ARAGO | 49.22831497165282,4.0073999655912145 | |||
24 | Section d'Enseignement Profess | Lycée | 20 RUE DE CONTRAI | 49.25063607358897,4.037199400980221 | |||
Nombre de résultats affichés: 100 | |||
Recherche terminée. | |||
</syntaxhighlight> | |||
Obtenir les infos d'un établissement précis (11ème de la liste)<br /> | |||
ex: | |||
<syntaxhighlight lang="bash" copy> | |||
./ecole.sh -c Reims -t lycee -o 10 -l 1 -f all | |||
</syntaxhighlight> | |||
ou | |||
<syntaxhighlight lang="bash" copy> | |||
./ecole.sh -c Reims -t lycee -o 10 -l 1 -f more | |||
</syntaxhighlight> | |||
Résultat: | |||
<syntaxhighlight> | |||
Recherche des établissements à 'Reims' | |||
Filtre : type 'lycee' | |||
Affichage des champs de contact | |||
Décalage des résultats : 10 | |||
Nombre de résultats par page : 1 | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="json" copy> | |||
[ | |||
{ | |||
"numero": 11, | |||
"nom_etablissement": "Lycée polyvalent Saint-Jean-Baptiste de La Salle", | |||
"type_etablissement": "Lycée", | |||
"adresse": "20 rue de Contrai", | |||
"position": { | |||
"lon": 4.037199400980221, | |||
"lat": 49.25063607358897 | |||
}, | |||
"telephone": "03 26 77 17 00", | |||
"mail": "contact@gdls-reims.com", | |||
"web": "https://www.groupedelasalle-reims.com" | |||
} | |||
] | |||
</syntaxhighlight> | |||
<syntaxhighlight> | |||
Nombre de résultats affichés: 1 | |||
Prochain offset possible: 11 | |||
Recherche terminée. | |||
</syntaxhighlight> | </syntaxhighlight> | ||
[[category:Divers]] [[category:api]] | [[category:Divers]] [[category:api]] | ||