Accéder à un calendrier Outlook en Perl
Par Julien Wajsberg le vendredi 21 janvier 2005, 13:40 - Informatique - Lien permanent
Au boulot, je suis sous Linux. J'avoue, je ne fais pas dans la simplicité :-)
À cela, il faut ajouter que j'ai une petite tête, j'oublie très facilement ce que je dois faire... Comme j'oubliais en particulier de regarder le calendrier Outlook (via l'interface Outlook Web Access), et donc j'oubliais les rendez-vous, ça ne pouvait plus durer !
J'ai donc écrit un petit script perl pour accéder à cette interface Web, et afficher les rendez-vous programmés pour le jour courant... et j'exécute ce script à intervalle régulier dans un aterm transparent sans bordures en haut à droite de mon écran, toujours en-dessous des autres fenêtres.
Voici le contenu de ces scripts. On doit pouvoir aller plus loin, comme afficher les rendez-vous de la journée suivante, voire même mettre tout ça dans un module et créer une petite application en Perl/GTK2 l'utilisant... Mais bon, ça sera pour plus tard, hein :-)
ocalendar.pl
#!/usr/bin/env perl
#
use strict;
use warnings;
use HTTP::Request::Common;
use LWP::UserAgent;
use Text::Iconv;
my $username = 'username';
my $password = 'password';
my $server = ''; # sans http://, avec le chemin complet jusqu'a OWA, pour le login
#my $server = 'serveur/exchange';
my $loginurl = "http://$username:$password\@$server/";
my $converter = Text::Iconv->new("UTF-8", "ISO-8859-1");
my $ua = LWP::UserAgent->new;
my $loginpage = $ua->get($loginurl);
$server = $loginpage->base;
$server =~ s|^http://|http://$username:$password\@|;
undef $loginpage;
my $calendar = $server . "Calendrier/?Cmd=contents";
my $calendarpage = $ua->get($calendar);
my $page = $calendarpage->decoded_content;
my @meetings = $page =~ /TITLE="(^"+)"/g;
foreach my $meeting (@meetings) {
$meeting = $converter->convert($meeting);
# on doit le faire 2 fois, je sais pas pkoi..
$meeting = $converter->convert($meeting);
print $meeting, "\n";
}
ocalendar.sh
#!/bin/sh
while true ; do
clear
ocalendar.pl
sleep 500
done
Lancement de aterm
aterm +sb -tr -vb -fg blue -txttype orInverted -title "Outlook Calendar" -geometry 40x5-64+0 -e "ocalendar.sh" &