Je suis en train de créer un blog pour quelqu'un. Ils veulent extraire beaucoup de données et les intégrer assez étroitement dans la conception, de sorte que les widgets standard sont un non-non. Ça s'est bien passé jusqu'à maintenant. Ils ont un accès public Google Agenda avec divers événements et je veux saisir les 5 prochains événements (à partir de "maintenant") et afficher le titre de l'événement, quand cette instance de l'événement commence, son emplacement et un lien vers l'article gcal. D'après ce que je peux voir, il y a trois options pour saisir les flux gcal: XML, ical ou HTML (contenant du vrai JSON). XML semble être le choix logique, non?Obtenir des événements Google Agenda en PHP
Eh bien le flux XML est (après la description du flux atomique) en fait juste beaucoup de faffy HTML. L'analyse est possible mais c'est une énorme douleur dans le derrière parce que les événements récurrents (dont il y en a plusieurs sur le calendrier) montrent seulement la première instance de cet événement et (apparemment) aucune information sur la prochaine instance.
Alors, est-ce que je suis juste un peu dense? Existe-t-il un moyen de montrer ce que je veux juste hacker à travers l'API XML?
Ou aurais-je plus de chance avec iCal? Je n'ai jamais fait d'iCal avec PHP, donc si vous avez, suggérez toutes les libs que vous avez utilisées pour rendre les choses plus simples.
Edit: grâce à la réponse, je téléchargé le pack Zend Gdata (qui, heureusement, est séparée du reste du Zend Framework). Faire ce que je besoin était aussi facile que cela:
require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata');
Zend_Loader::loadClass('Zend_Gdata_HttpClient');
Zend_Loader::loadClass('Zend_Gdata_Calendar');
$service = new Zend_Gdata_Calendar();
$query = $service->newEventQuery();
$query->setUser('[email protected]');
$query->setVisibility('public');
$query->setProjection('full');
$query->setStartMin(date('Y-n-j'));
$query->setStartMax(date('Y-n-j', time() + (60*60 *24*8)));
$query->setOrderby('starttime');
try { $eventFeed = $service->getCalendarEventFeed($query); }
catch (Zend_Gdata_App_Exception $e) { return; }
foreach ($eventFeed as $event)
echo $event; // do something real here
Cela devrait vous avoir pour des événements (oui setStartMax est exclusif couchait il 8 jours à l'avenir est nécessaire) une semaine.
J'espère que cela aidera quelqu'un d'autre à l'avenir.
Je l'ai vu avant de demander mais a été effrayé par le "Zend" dans le nom. Maintenant, vous avez dit que je n'ai pas besoin de toute la structure de cludging, je vais y jeter un coup d'œil. Merci. – Oli