From 68d2090938c5bc69226d2f47203d573c06267adc Mon Sep 17 00:00:00 2001 From: Elias Martin-Morisse Date: Fri, 3 Mar 2023 16:56:38 +0100 Subject: [PATCH] Ajout script multi-fichiers --- convert-ics-multiple.py | 46 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 convert-ics-multiple.py diff --git a/convert-ics-multiple.py b/convert-ics-multiple.py new file mode 100644 index 0000000..fd2aa6a --- /dev/null +++ b/convert-ics-multiple.py @@ -0,0 +1,46 @@ +# Script de conversion de fichiers calendriers au format CalDAV (.ics) vers un tableur (.csv) +# Auteur : Elias Martin - elias@hereli.fr +# Licence : EUPL V1.2 + +## Credits : https://stackoverflow.com/questions/59958941/calendar-ics-to-csv-in-python +## and https://stackoverflow.com/questions/18262293/how-to-open-every-file-in-a-folder +## and https://stackoverflow.com/questions/9319317/quick-and-easy-file-dialog-in-python + +import vobject +import csv +import os, glob +#from tkinter.filedialog import askopenfilename +#filename = askopenfilename() + +# Changer cette variable pour écrire dans un nouveau fichier +nom_fichier_sortie = "calendriers_mediateurs.csv" + +with open(nom_fichier_sortie, mode='w') as csv_out: + + csv_writer = csv.writer(csv_out, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL) + +# Changer ces éléments pour renommer les colonnes du fichier de sortie + csv_writer.writerow(['Evt', 'Début', 'Fin', 'Description', 'Lieu']) + +# Décommenter (et indenter la fin du script) pour activer + for filename in glob.glob('*.ics'): + # read the data from the file + data = open(os.path.join(os.getcwd(), filename)).read() + +#Commenter pour ne pas activer la fenêtre de sélection d'un seul fichier +# data = open(filename).read() + + # iterate through the contents + for cal in vobject.readComponents(data): + for component in cal.components(): + if component.name == "VEVENT": + writerow = [] + for attr in ['summary', 'dtstart', 'dtend', 'description', 'location']: + if hasattr(component, attr): + writerow.append(getattr(component, attr).valueRepr()) + else: + writerow.append('-') + + #print(writerow) + csv_writer.writerow(writerow) +