この日記は https://yapud.hatenablog.com/ に引っ越し中
2008-10-07
_ [Software] XML操作して何をやりたかったか
atom の feed をパースして、必要な箇所だけ表示したかった。
gmail の新着が atom でとれるのだ↓
https://mail.google.com/mail/feed/atom
このなかから必要情報だけ取り出して表示するページ、すなわち新着メールのさわりだけ表示するページを作りたかった。
もちろん複数アカウントまとめてな。
Basic Authentication の情報を、見たいアカウント分変更しながら atom の feed を取れば、新着メールまとめページが作れる!と思ったの。
こんなコード。
$url = 'https://mail.google.com/mail/feed/atom';
$accounts = array(
'account1' => 'password1',
'account2' => 'password2',
'account3' => 'password3',
);
while(list ($username, $password) = each($accounts)) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$xml_data = curl_exec($ch);
$parser = new XML_Unserializer(array('parseAttributes' => true, 'forceEnum' => array('entry')));
$parser->unserialize( $xml_data );
$data = $parser->getUnserializedData();
if($data['fullcount']>0){
print("<strong>$username ($data['fullcount'])</strong><br>");
while(list ($key, $val) = each($data['entry'])) {
print ('<a href="'. $val['link attr']['href'] .'">'.$val['title'] . "</a><br>\n");
print ($val['author']['email'] . "<br>\n");
print ($val['summary'] . "<br>\n");
}
}
print("<hr>\n");
curl_close($ch);
}
前 | 2008年 10月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |