Calendar And Holiday Concept. Holidays Calendar.
|

Comment créer un fichier ICS des vacances scolaires françaises avec Python

TL;DR
Grâce à Python, récupérez automatiquement les vacances scolaires françaises depuis une API et exportez-les dans un fichier ICS compatible avec Google Agenda ou tout autre logiciel de calendrier.
Pour ceux qui ne veulent pas suivre le tuto ou n’ont pas de compétences en code voici directement les fichiers que vous pouvez importer dans vos calendriers:

Télécharger Zone A
Télécharger Zone B
Télécharger Zone C

Planifier ses vacances ou organiser son emploi du temps peut vite devenir compliqué. Mais pourquoi ne pas automatiser cette tâche ? Avec Python, vous pouvez générer un fichier ICS contenant toutes les dates de vacances scolaires françaises en quelques étapes seulement. Voici comment faire.


Les prérequis

Avant de commencer, vous aurez besoin de quelques outils et connaissances de base :

  1. Python installé sur votre ordinateur
  2. Modules Python nécessaires :
    • requests pour interagir avec l’API.
    • ics pour générer un fichier ICS. Vous apprendrez à les installer dans les étapes ci-dessous.
  3. Une connexion internet pour récupérer les données depuis l’API officielle française des vacances scolaires.

Étape 1 : Installer les modules nécessaires

Ouvrez un terminal ou un PowerShell, puis tapez la commande suivante pour installer les dépendances :

pip install requests ics

Ces modules sont indispensables pour récupérer les données et générer un fichier ICS.


Étape 2 : Le script Python

Voici un script Python que vous pouvez utiliser pour générer votre fichier ICS :

import json
import requests
from ics import Calendar, Event
from dateutil.parser import parse

# Étape 1 : Récupérer les données JSON depuis l'API
API_URL = "https://data.education.gouv.fr/api/records/1.0/search/"
PARAMS = {
"dataset": "fr-en-calendrier-scolaire",
"rows": 100,
"sort": "start_date",
"facet": ["location", "zone", "description"]
}

try:
response = requests.get(API_URL, params=PARAMS)
response.raise_for_status()
data = response.json()
except requests.exceptions.RequestException as e:
print(f"Erreur lors de la récupération des données : {e}")
exit()

# Étape 2 : Vérifier les données et créer un calendrier ICS
if "records" not in data:
print("Aucune donnée trouvée dans la réponse.")
exit()

cal = Calendar()
existing_events = set()

for record in data["records"]:
fields = record.get("fields", {})
try:
description = fields["description"]
start_date = fields["start_date"]
end_date = fields["end_date"]
zone = fields.get("zone", "Zone non spécifiée")

# Identifier les événements pour éviter les doublons
event_id = f"{description}-{start_date}-{end_date}-{zone}"
if event_id in existing_events:
continue
existing_events.add(event_id)

# Convertir les dates au bon format
parsed_start_date = parse(start_date)
parsed_end_date = parse(end_date)

# Créer un événement
event = Event()
event.name = f"{description} ({zone})"
event.begin = parsed_start_date.isoformat()
event.end = parsed_end_date.isoformat()
cal.events.add(event)

except KeyError as e:
print(f"Donnée manquante pour un enregistrement : {e}")
except ValueError as e:
print(f"Erreur dans le format de date : {e}")

# Étape 3 : Sauvegarder dans un fichier ICS
output_file = "vacances_scolaires_corrige.ics"
try:
with open(output_file, "w", encoding="utf-8") as f:
f.writelines(cal)
print(f"Fichier ICS corrigé généré avec succès : {output_file}")
except IOError as e:
print(f"Erreur lors de la sauvegarde du fichier ICS : {e}")

import os

output_file = "vacances_scolaires.ics"
with open(output_file, "w", encoding="utf-8") as f:
f.writelines(cal)

# Affiche le chemin complet
absolute_path = os.path.abspath(output_file)
print(f"Fichier ICS sauvegardé à l'emplacement : {absolute_path}")

Étape 3 : Lancer le script

  1. Enregistrez le script dans un fichier, par exemple generate_ics.py.
  2. Exécutez-le via un terminal python generate_ics.py
  3. Si tout fonctionne correctement, un fichier nommé vacances_scolaires.ics sera généré.

Étape 4 : Importer le fichier ICS dans Google Agenda

Une fois votre fichier ICS prêt, voici comment l’importer dans Google Agenda :

  1. Connectez-vous à Google Agenda.
  2. Cliquez sur l’icône ⚙️ (Paramètres) > « Paramètres ».
  3. Dans la colonne de gauche, choisissez « Importer et exporter ».
  4. Sous « Importer », téléchargez votre fichier vacances_scolaires.ics.
  5. Sélectionnez l’agenda où vous souhaitez ajouter les événements, puis cliquez sur Importer.

Vos vacances scolaires apparaîtront dans votre agenda !

Publications similaires