我正在为某人创建博客。他们想要提取大量数据并将其紧密集成到设计中,因此标准小部件是禁忌。到现在为止都很好。
他们有一个公共访问谷歌日历,上面有各种事件,我想抓取接下来的 5 个事件(从“现在”开始)并显示事件标题、事件实例开始时、它的位置和到 gcal 的链接物品。
据我所见,获取 gcal 提要有三个选项:XML、ical 或 HTML(包含一些非常糟糕的 JSON)。XML 似乎是合乎逻辑的选择,对吧?
好吧,XML 提要(在原子提要描述之后)实际上只是很多 faffy HTML。解析这是可能的,但在后面是一个巨大的痛苦,因为重复事件(日历上有几个)只显示该事件的第一个实例,并且(显然)没有关于下一个实例何时出现的信息。
所以我只是有点密集吗?有没有办法通过 XML API 显示我想要的内容?
或者我会通过 iCal 获得更好的运气吗?我从来没有用 PHP 做过任何 iCal,所以如果你有,请推荐你用来让事情变得更简单的任何库。
编辑:感谢答案,我下载了 Zend Gdata 包(幸运的是,它与 Zend 框架的其余部分是分开的)。做我需要的就这么简单:
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('your_user@googlemail.com');
$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
这应该可以为您带来一周的事件(是的 setStartMax 是专有的,因此需要将其设置为未来 8 天)。
希望这对将来的其他人有所帮助。