『Plagger で Amazon2iCal 改良』 にて、Data::ICal で ORGANIZER をちゃんとしたフォーマットにする方法がわからん、と言っていたのですが、やりかたわかりました。
$event->add_properties(
organizer => [ 'MAILTO:gosukenator@gmail.com', { CN => 'Gosuke Miyashita' } ],
);
Data::ICal::Entry の pod にちゃんと書いてありましたね。
というわけで、organizer をちゃんとセットするように、Publish::iCal を書き換えてみました。Email::Address は Filter::ExtractAuthorName から拝借してます。
Index: plagger/trunk/lib/Plagger/Plugin/Publish/iCal.pm
===================================================================
--- plagger/trunk/lib/Plagger/Plugin/Publish/iCal.pm (revision 231)
+++ plagger/trunk/lib/Plagger/Plugin/Publish/iCal.pm (revision 233)
@@ -6,4 +6,5 @@
use Data::ICal;
use Data::ICal::Entry::Event;
+use Email::Address;
sub register {
@@ -34,4 +35,8 @@
for my $entry ($feed->entries) {
+ my $address = ( Email::Address->parse($entry->author) )[0];
+ my $mail = eval { $address->address } || 'nobody@example.com';
+ my $name = eval { $address->name } || $entry->author;
+
my $date = $entry->date;
my $event = Data::ICal::Entry::Event->new;
@@ -39,5 +44,5 @@
summary => $entry->title . ' - ' . $entry->author,
description => $entry->summary || $entry->body,
- organizer => $entry->author,
+ organizer => [ "MAILTO:$mail", { cn => $name } ],
url => $entry->link,
dtstart => join('', split('-', $date->ymd)),