Page 1 sur 1

GoogleAgenda et MySQL

Posté : 22 oct. 2008, 02:50
par Elie
Bonjour,

Je cherche à créé un script qui lirait un flux de GoogleAgenda de maniere reguliere et ajouterai les rendez vous manquant dans ma base de données personnelles.

J'arrive grosso modo a recuperer les informations avec des preg_match mais c'est vraiment hasardeux.

Est-ce que quelqu'un à deja fait ce genre de projet ?

Merci, Elie

Posté : 23 oct. 2008, 13:45
par Hywan
Hey :),

Il serait préférable de déjà savoir sous quelle forme sont les données fournies par GoogleAgenda. C'est un XML j'imagine ?

Posté : 23 oct. 2008, 13:52
par Elie
Oauis c'est du XML mais vraiment pas pratique :

Code : Tout sélectionner

<entry> <id>http://www.google.com/calendar/feeds/***/private-***</id> <published>2008-09-16T09:28:50.000Z</published> <updated>2008-10-21T01:03:12.000Z</updated> <category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'/> <title type='html'>Date Eric Antoine</title> <summary type='html'>Date : ven. 31 oct. 2008<br> <br>Lieu : Troyes <br>État de l'événement : confirmé</summary> <content type='html'>Date : ven. 31 oct. 2008<br /> <br />Lieu : Troyes <br />État de l&#39;événement : confirmé <br />Description de l&#39;événement : 03/10/2008 : Envoie d&#39;un dossier technique [email protected] 14/10/2008 : Relance par mail 21/10/2008 : Relance par mail</content> <link rel='alternate' type='text/html' href='http://www.google.com/calendar/***' title='alternate'/> <link rel='self' type='application/atom+xml' href='http://www.google.com/calendar/feeds/***'/> <author><name>Elie Najberg</name><email>****</email></author> </entry>
Ce que je fais c'est que j'isole chaque <entry> puis chaque <summary> afin de recuperer la date et le lieu mais c'est vraiment pratique.

[/code]

Posté : 23 oct. 2008, 14:09
par Hywan
Tu développes avec PHP 4 ou PHP 5 ?
Si tu utilises PHP 5 (biiien), tu peux utiliser SimpleXML pour parser ton fichier XML. Ce sera beaucoup plus simple que d'utiliser des expressions régulières hasardeuses.
Si tu utilises PHP 4 (pas biiien), tu peux utiliser des classes pré-existantes, comme Clean XML To Array sur PHPClasses.org.

Dans tous les cas, tu devais obtenir un arbre (des tableaux de tableaux ou des objets d'objets) que tu peux déjà plus facilement lire (une simple boucle foreach suffit) :).

Posté : 23 oct. 2008, 14:48
par DocType
Pourquoi ne pas utiliser les apis google ?

Posté : 23 oct. 2008, 14:53
par Hywan
Attention, se base sur Zend Framework. C'est pas dramatique, mais il faut le savoir :).

Posté : 23 oct. 2008, 15:57
par Elie
En attendant de voir si les APi de GoogleAgenda m'aideront, je suis parti sur la base de SimpleXML que je ne connaissais pas.
	$contenuUrl = file_get_contents('http://www.google.com/calendar/feeds/*****%40gmail.com/private-*****/basic');
	$xml = new SimpleXMLElement($contenuUrl);
	$i=0;
	foreach($xml->entry as $v) {
		 $explode = explode('<br>', $v->summary[0]);
		 $evenement[$i]['date'] = substr($explode[0], 6);
		 $evenement[$i]['lieu'] = substr($explode[2], 6);
		 $i++;
	}
	
	print_r($evenement);
J'arrive a recuperer le lieu et la date de chaque evenement.
Le probleme est qu'il faudrait que j'arrive à strtotime() les infos des dates et j'ai 3 cas différent. Je vais essayer de bidouiller une fonction (Ou lire les APi de Google :p)

Code : Tout sélectionner

[date] => sam. 25 oct. 2008 [date] => mer. 1 avr. 2009 14:00 au 15:00&nbsp;CEST [date] => ven. 8 mai 2009 au sam. 9 mai 2009&nbsp;

Posté : 23 oct. 2008, 16:07
par Hywan
Tu peux utiliser directement simplexml_load_file(), mais reste à vérifier si elle supporte des protocoles comme HTTP.
Si oui, ton code se simplifierait en ceci :
foreach(simplexml_load_file('http://…')->entry as $v) {

    var_dump($v);
}
Je l'ai fait en une fois, mais tu peux stocker le résultat de simplexml_load_file() dans une variable, peu importe, c'était juste par fainéantise ;-).