iCal report
Pour mes besoins personnel, un petit script permettant de représenter de façon synthétique les événements enregistrés dans un ou plusieurs calendriers.
L’idée était de disposer d’un outil qui permettrait de lire un calendrier électronique au format ICalendar afin de produire différents rapports synthétiques (aux formats TXT, ReST, CSV ou HTML).
P.I. le format ICalendar est un standard (RFC 5545) pour les échanges de données de calendrier.
Il est supporté par un grand nombre de logiciels tels que :
– Apple iCal & iSync
– Chandler
– Google Agenda
– IGoogle
– IBM/Lotus Notes & Domino
– KOrganizer
– Mozilla Lightning & Sunbird
– Mulberry
– Microsoft Outlook (versions récentes, et pas Outlook Express)
– Netvibes
– PHP (via une librairie d’extension)
– Posh
– ScheduleWorld
– SOGo
– Ximian Evolution
– Windows Calendar
– Zimbra
– ...
Ci-joint le fameux script Python :
$ python.exe -O icalreport.py -h
Usage: python -O icalreport.py [options] <cal1.ics> [cal2.ics ...]
Open and read iCal (ics) files then output report.
Options:
-s START, --start=START
start date (YYYY-MM-DD)
-e END, --end=END end date (YYYY-MM-DD)
-o OUTPUT, --output=OUTPUT
outpout format ['txt', 'rest', 'csv', 'html']
-l LANG, --lang=LANG output language ['C', 'fr_FR.utf8', 'fr-FR', ...]
-u UTC, --utc=UTC UTC offset (Europe/Paris= GMT +01:00 = 1)
-t, --test auto test
--version show program's version number and exit
-h, --help show this help message and exit
A noter que l’option -t
utilise un calendrier auto-généré comportant les dates des fêtes françaises pour la fin de l’année 2013. C’est cet agenda que l’on prendra en exemple ci-dessous.
Outre les options :
– --start YYYY-MM-DD
et --end YYYY-MM-DD
qui permettent de n’afficher qu’une partie de l’agenda,
– --utc 1
qui permet de positionner le décalage UTC
– et --lang fr_FR.utf8
(sous GNU/Linux) ou --lang fr-FR
(sous MS/Windows) qui permet de chaoisir la langue d’affichage,
je ne m’attarderais ici qu’aux différents rapports disponibles via l’option --output
.
txt
Format par défaut, une simple liste des événements triés par date :
$ python -O icalreport.py -s 2013-11-01 -u 1 -l fr-FR sample.ics -t -o txt
rest
Format reStructuredText représentant les évenements regroupés par date :
$ python -O icalreport.py -s 2013-11-01 -u 1 -l fr-FR sample.ics -t -o rest
Puis grâce aux docutils, conversion en un format pour LibreOffice par exemple :
$ python rst2odt.py --generator --date --time sample.rst sample.odt
csv
Format prêt à être importé dans un tableur, les événements sont regroupés par semaine :
$ python -O icalreport.py -s 2013-11-01 -u 1 -l fr-FR sample.ics -t -o csv
html
Enfin, une présentation des évenements sur un calendrier par mois :
$ python -O icalreport.py -s 2013-11-01 -u 1 -l fr-FR sample.ics -t -o html
Puis impression via un document au format PDF grâce à Firefox ou en passant par le format XPS sous Windows :