iCalデータの解析

そういえばこれまでiCalフォーマットというのを扱ったことなかったので、少し調べてた。
https://tools.ietf.org/html/rfc5545


試しにlivedoorで配信されてるiCal形式のお天気情報をローカルに保存。
http://weather.livedoor.com/weather_hacks/

$ wget http://weather.livedoor.com/forecast/ical/13/63.ics


ググって見つけた良さげなパッケージをインストール。
http://sabre.io/vobject/install/

$ composer require sabre/vobject ~3.3.3


ドキュメント見ながら、適当にスクリプトを書く。

<?php
require_once 'vendor/autoload.php';
use Sabre\VObject;

function puts($str) {
	echo $str . PHP_EOL;
}

$data = file_get_contents('./63.ics');
$vcalendar = VObject\Reader::read($data);

puts($vcalendar->{'X-WR-CALNAME'}->getValue());
puts('------');

foreach ($vcalendar->VEVENT as $event) {
	puts($event->DESCRIPTION->getValue());
	puts($event->SUMMARY->getValue());
	puts('---');
}


実行結果

東京の天気 - livedoor weather
------
http://weather.livedoor.com/area/forecast/130010?r=ical20141014 [ 東京 ] 14日の天気は晴時々曇、最高気温は26℃ 最低気温は22℃でしょう。
晴時々曇 26℃/22℃
---
http://weather.livedoor.com/area/forecast/130010?r=ical20141015 [ 東京 ] 15日の天気は曇のち雨、最高気温は21℃ 最低気温は17℃でしょう。
曇のち雨 21℃/17℃
---
http://weather.livedoor.com/area/forecast/130010?r=ical20141016 [ 東京 ] 16日の天気は雨のち曇、最高気温は21℃ 最低気温は14℃でしょう。
雨のち曇 21℃/14℃
---
http://weather.livedoor.com/area/forecast/130010?r=ical20141017 [ 東京 ] 17日の天気は晴時々曇、最高気温は24℃ 最低気温は16℃でしょう。
晴時々曇 24℃/16℃
---
http://weather.livedoor.com/area/forecast/130010?r=ical20141018 [ 東京 ] 18日の天気は晴時々曇、最高気温は22℃ 最低気温は15℃でしょう。
晴時々曇 22℃/15℃
---
http://weather.livedoor.com/area/forecast/130010?r=ical20141019 [ 東京 ] 19日の天気は晴時々曇、最高気温は22℃ 最低気温は15℃でしょう。
晴時々曇 22℃/15℃
---
http://weather.livedoor.com/area/forecast/130010?r=ical20141020 [ 東京 ] 20日の天気は晴時々曇、最高気温は22℃ 最低気温は15℃でしょう。
晴時々曇 22℃/15℃
---