« 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 (par défaut: 0)" #si les résultats sont superieurs à la limite de 100, permet d'afficher le reste des infos à partir de l'offset
     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 -t ecole -0 100"
     echo "  $0 -c Reims -f more -o 100 -l 20"
     echo "  $0 -c Reims -f more -o 100"
    echo "  $0 -c Lyon -t college -f all -o 100"
     exit 1
     exit 1
}
}
Ligne 254 : Ligne 253 :
commune=""
commune=""
type_etablissement=""
type_etablissement=""
output_mode="table" # table|more|all
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"
           if ! [[ "$offset" =~ ^[0-9]+$ ]]; then
           [[ "$offset" =~ ^[0-9]+$ ]] || { echo "Offset doit être un nombre positif" >&2; exit 1; } ;;
               echo "L'offset doit être un nombre positif" >&2
        l) limit="$OPTARG"
              exit 1
          [[ "$limit" =~ ^[0-9]+$ ]] && [ "$limit" -le 100 ] || {
          fi ;;
               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 avec offset
# 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=100&offset=${offset}"
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: 100" >&2
echo "Nombre de résultats affichés: $limit" >&2
[ "$offset" -gt 0 ] && echo "Prochain offset possible: $((offset + 100))" >&2
[ "$offset" -gt 0 ] && echo "Prochain offset possible: $((offset + limit))" >&2
echo "Recherche terminée." >&2
echo "Recherche terminée." >&2
</syntaxhighlight>
</syntaxhighlight>