Les évènements Google Agenda dictés par votre Nabaztag (anniversaires, rdv etc…)

Laisser une réponse »

Si vous avez un compte Google Agenda et que vous souhaitez, que votre lapin vous rappelle les évènements du jour, voici un petit script pour vous.

A noter, que ce script sera bientôt disponible sur le site de zcripts.com pour que vous puissiez l’utiliser sans rien programmer, ni rien héberger 😉

Pour trouver l’adresse de votre fichier ical Google Calendar allez dans paramètres (en haut à droite) -> onglet Agendas -> cliquez sur le nom de l’agenda et descendez jusqu’à Adresse URL privée et cliquez enfin sur le bouton ical (vert)

ical_google_agenda

ical_google_agenda

[cc lang=’php’ width=’100%’ lines=’40’]
$serial = « ********* »; // serial de votre lapin
$token = « ********* »; // token de votre lapin
// chemin privé de votre fichier ical privé de Google Agenda
$path = « *********** »;
// une partie de l’adresse est en dur pour éviter l’exécution d’un
// script distant
$fichier = « http://www.google.com/calendar/ical ». $path . »basic.ics »;

$source = file_get_contents($fichier); // on ouvre le fichier
$source = preg_split(‘#\n(?!s)#’, $source);
$source = array_map(‘trim’, $source);

$tabEve = array(); // tableau des évenements
$cles = array(); // tableau des clés des évenements

$i = 0;
// Boucle qui parcours le fichier à la recherche des événements
// le but est de dire que de l’index début à l’index fin on a un événement
foreach($source as $k=>$eve){
// on récupère la zone pour gérer le décalage horaire
if (eregi(‘X-WR-TIMEZONE’,$eve)) {
$ex = explode(« : »,$eve);
$zone = $ex[1];
}

if ($eve == ‘BEGIN:VEVENT’) {
$cles[$i][‘debut’] = $k;
}

if ($eve == ‘END:VEVENT’) {
$cles[$i][‘fin’] = $k;
$i++;
}
}

$e = 0;
// boucle qui va rechercher les évènements que l’on a délimité plus haut, et enfin on garde seulement les
// éléments nécessaires pour le lapin
foreach($cles as $c){
for($eve=$c[‘debut’]; $eve< =$c['fin'];$eve++){ $ex = explode(":",$source[$eve]); if(!isset($eves[$e][$ex[0]])){ if(eregi("SUMMARY",$ex[0]) || eregi("RRULE",$ex[0])){ $eves[$e][$ex[0]] = utf8_decode($ex[1]); // repetitions } if(eregi("DTSTART",$ex[0])){ $eves[$e]['SMOIS'] = substr($ex[1],4,2); $eves[$e]['SJOUR'] = substr($ex[1],6,2); $eves[$e]['SANNEE'] = substr($ex[1],0,4); $eves[$e]['DTSTART'] = substr($ex[1],0,4).substr($ex[1],4,2).substr($ex[1],6,2); // jour début if(strlen($ex[1])>8){
$d = date(‘Y-m-d H:i’,mktime(substr($ex[1],9,2), substr($ex[1],11,2),0, substr($ex[1],4,2), substr($ex[1],6,2), substr($ex[1],0,4)));
$date = new DateTime($d,new DateTimeZone($zone));
$new_date = strtotime($d)+$date->getOffset(); // calcul décalage horaire
$eves[$e][‘HEURE’] = date(‘H:i’,$new_date);
}else{
$eves[$e][‘HEURE’] = «  »;
}

}
if(eregi(« DTEND »,$ex[0])){
$eves[$e][‘EMOIS’] = substr($ex[1],4,2);
$eves[$e][‘EJOUR’] = substr($ex[1],6,2);
$eves[$e][‘EANNEE’] = substr($ex[1],0,4);
$eves[$e][‘DTEND’] = substr($ex[1],0,4).substr($ex[1],4,2).substr($ex[1],6,2); // jour fin
}
}
}

$e++;
}

// Aujourd’hui
$jour = date(« d »); // jour
$mois = date(« m »); // mois
$annee = date(« Y »); // annee
$aujourdhui = date(« Ymd »); // date du jour

// création du tableau final qui récupère les évènements du jour (aussi ceux qui in une fréquence annuelle pour les anniversaires par exemple)
if(count($eves)>0){
foreach($eves as $eve){

if(empty($eve[‘HEURE’])){$eve[‘HEURE’] =  » « ;}else{$eve[‘HEURE’] =  » à  » . $eve[‘HEURE’];}

if($aujourdhui>=$eve[‘DTSTART’] && $aujourdhui< =$eve['DTEND']){ $tabEve[] = $eve['SUMMARY']. $eve['HEURE']; }else{ if(eregi("FREQ=YEARLY",$eve['RRULE'])){ $d = $annee.substr($eve['DTSTART'],4,4); if($aujourdhui>=$d && $aujourdhui<=$d){ $tabEve[] = $eve['SUMMARY']. $eve['HEURE']; } } } } } // Maintenant que nous avons le tableau tabEve des évènements du jour, on peut créer le texte du lapin $phrase = "évènements du jour : "; foreach($tabEve as $evefin){ $phrase .= $evefin. " . "; } if(empty($phrase)){ $phrase = "Rien aujourd'hui"; } // envoi au lapin ! $curl = curl_init(); $api_url = "http://api.nabaztag.com/vl/FR/api.jsp?&sn=$serial&token=$token&voice=$voice&tts=".urlencode(utf8_encode($phrase)); curl_setopt($curl,CURLOPT_HEADER,$api_url); curl_exec($curl); curl_close($curl); } [/cc] Voilà. Ce script pourrait être amélioré, avec la gestion des autres répétitions, MONTHLY etc...



ShareThis

Publicité

Laisser un commentaire