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";