iCalFilter 0.1 : un couteau suisse en ligne de commande pour les fichiers iCalendar

Posté par  (site web personnel) . Édité par claudex, Nÿco et Bruno Michel. Modéré par patrick_g. Licence CC By‑SA.
Étiquettes :
40
20
déc.
2011
Ligne de commande

iCalFilter est né du constat qu'il n'existait pas (comprendre : je n'ai pas trouvé) d'outil en ligne de commande pour manipuler les fichiers iCalendar (format standard de calendriers). Leur structure interne (suite d'enregistrements multilignes non-ordonnée) rend impossible (ou difficile) l'usage des outils unix traditionnels.

Voilà pourquoi j'ai écrit iCalFilter (aujourd'hui disponible en version 0.1, tadaam !), en python, et sous GPL3+.

iCalFilter propose donc des fonctions proches d'outils unix traditionnels, mais adaptés au format iCalendar, ainsi que des possibilités sympatiques de formattage de la sortie : au lieu de fournir en sortie un fichier iCalendar, il peut produire une vue calendaire colorée dans la console (et bientôt en HTML, postscript, etc.).

En deuxième partie de la dépêche, quelques exemples de commandes possibles. Voir aussi la documentation pour quelque chose de plus exhaustif, ou la page d'exemples de scripts (pour publier des infos de temps libre/occupé, supprimer des vieux événements d'un calendrier, afficher une vue calendaire des événements du jour ou de la semaine...)

Quelques exemples

Recherche (à la grep)

iCalFilter peut ne garder que les événements d'un (ou de plusieurs) calendriers qui correspondent à un motif donné (ici, qui possèdent un champ « lieux ») :

icalfilter '/LOCATION/' entree1.ics entree2.ics > sortie.ics

De même, il peut ne garder que les champs de chaque événement correspondant à un motif (en utilisant l'option « f » pour field, ici uniquement les champs de date de début, de date de fin, et d'intitulé) :

icalfilter '/DTSTART|DTEND|SUMMARY/f' < entree.ics > sortie.ics

Vu que l'on travaille sur des calendriers, iCalFilter peut faire des recherches par date absolue (ici on garde tous les évènements supérieurs au 10 octobre 2010) :

icalfilter '/>2010-10-10/' entree.ics -o sortie.ics

ou relative (tous les évènements de la semaine prochaine) :

cat entree.ics | icalfilter '/=+1w/' -o sortie.ics

Supressions (à la grep -v)

Pour supprimer les évènements ou les champs qui correspondent à un motif, il suffit de préfixer les commandes précédentes par « d » (delete). Par exemple pour supprimer tout événement plus vieux qu'un mois :

icalfilter 'd/<-1m/' entree.ics > sortie.ics

Remplacement (à la sed s///)

iCalFilter permet aussi de faire des remplacement de valeurs dans des champs correspondant à un motif donné. Exemple pour annonymiser les intitulé des événements :

icalfilter 's/SUMMARY/unknown/' entree.ics > sortie.ics

Et d'autres

On peut chaîner les commandes (avec des « ; »), dérouler des événements récurrents, faire des scripts... Il faut lire la documentation pour tout savoir !

Aller plus loin

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.