« Api gouv » : différence entre les versions
| Ligne 232 : | Ligne 232 : | ||
# 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 240 : | ||
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 253 : | ||
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 268 : | ||
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 289 : | Ligne 289 : | ||
} | } | ||
# 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?where=${where_clause}&limit=${limit}&offset=${offset}" | ||
# Affichage des paramètres de recherche | # Affichage des paramètres de recherche | ||
| Ligne 298 : | Ligne 298 : | ||
[ "$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" >&2 | [ "$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 348 : | Ligne 349 : | ||
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> | </syntaxhighlight> | ||