From 89e22cd59a454703a72677bceba8e161d6bce0ae Mon Sep 17 00:00:00 2001 From: Elias Martin-Morisse Date: Fri, 3 Mar 2023 16:52:43 +0100 Subject: [PATCH] =?UTF-8?q?Transf=C3=A9rer=20les=20fichiers=20vers=20''?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit création du script --- convert-ics.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 convert-ics.py diff --git a/convert-ics.py b/convert-ics.py new file mode 100644 index 0000000..f0a1c9b --- /dev/null +++ b/convert-ics.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) +