The remind program doesn't actually put reminders into the calendars it renders (for good reason), o had to use part of the MSG. I could have used a SPECIAL ALARM, but then I only get the date.
For example, I use this:
REM Monday 2005 AT 09:00 DURATION 1:00 MSG +90 Weekly meeting
To provide a 90 minute reminder of the event. This meant that my parsing of the output of remind had to get smarter. So I rewrote it in perl:
#!/usr/bin/env perl
use warnings;
use strict;
use Date::Parse;
my $CALENDAR="./calendar";
my $WEEKS=2;
print "BEGIN:VCALENDAR\n";
print "VERSION:1.0\n";
open(CAL, '-|', "remind -s+${WEEKS} -b1 ${CALENDAR}")
or die "can't start remind: $!";
while (<CAL>) {
chomp;
my ($date, $x, $y, $duration, $z, $msg)
= split( /\s/, $_, 6);
my @msg=split(/\s/, $msg);
my ($start,$alarm);
next if ( $date =~ m/^#/ ) ;
if ( $duration eq '*' ) { $duration=60 ; }
if ( $z eq '*' ) {
$start="00:00";
$duration=1439;
$alarm=0;
} else {
$start=shift @msg;
if ( $msg[0] =~ /\+.*/ ) {
$alarm = shift @msg;
$alarm =~ s/\+//
} else {
$alarm = 0
}
$msg=join(" ",@msg);
}
my $t=str2time("$date $start");
die "unable to parse $date $start" if not defined $t;
my $d=$duration*60;
my $a=$alarm*60;
my ($sec,$min,$hour,$mday,$mon,$year) = localtime($t);
$year += 1900; $mon++;
my $s_string=sprintf("%04d%02d%02dT%02d%02d%02d",
$year, $mon, $mday, $hour, $min, $sec);
($sec,$min,$hour,$mday,$mon,$year) = localtime($t+$d);
$year += 1900; $mon++;
my $e_string=sprintf("%04d%02d%02dT%02d%02d%02d",
$year, $mon, $mday, $hour, $min, $sec);
($sec,$min,$hour,$mday,$mon,$year) = localtime($t-$a);
$year += 1900; $mon++;
my $a_string=sprintf("%04d%02d%02dT%02d%02d%02d",
$year, $mon, $mday, $hour, $min, $sec);
print "\n";
print "BEGIN:VEVENT\n";
print "CATEGORIES:MEETING\n";
print "SUMMARY:$msg\n";
print "DTSTART:$s_string\n";
print "DTEND:$e_string\n";
print "AALARM:$a_string\n" if ( $alarm != 0 ) ;
print "END:VEVENT\n";
print "\n";
}
print "\n";
print "END:VCALENDAR\n";