Rem2ics

From Skoll.CA
Jump to navigation Jump to search
Main article: Remind

A script that will convert Remind events to iCalendar format is here. It correctly handles details of the iCalendar format, including required properties, character quoting, line folding, correct EOL, and will recognize and handle recurring events.


Or the following simple script can be used to convert Remind events to iCalendar format. The output is suitable as a read-only format, but is not really designed to be edited (a REM statement that generates periodic reminders will be converted to separate iCal entries for every occurrence).

Among other uses, this script could be used to display your reminders via Google Calendar. Click "Manage calendars"->"Import Calendar" to import the ics file.

#!/usr/bin/awk -f
# rem2ics by Anthony J. Chivetta <achivetta@gmail.com>
# version 0.1 - 2006-06-09
# version 0.2 - 2010-10-27 (one-line patch by Shane Kerr <shane@time-travellers.org>)
# version 0.3 - 2023-12-02 (indent and simplify using the -b2 argument)
# Converts output of remind -s to iCalendar
# usage: remind -s -b2 | rem2ics
#
# THE FOLLOWING CODE IS RELEASED INTO THE PUBLIC DOMAIN
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE
BEGIN {
  print "BEGIN:VCALENDAR"
  print "VERSION:2.0"
}
{
  gsub("/","",$1)
  print "BEGIN:VEVENT"
  if ($5 != "*") {
    printf("DTSTART:%dT%02d%02d00\n",$1,$5/60,$5%60)
    printf("DTEND:%dT%02d%02d00\n",$1,($5+$4)/60,($5+$4)%60)
  } else {
    printf("DTSTART:%d\n",$1)
  }
  print "SUMMARY:" substr($0,match($0,$6))
  print "END:VEVENT"
}
END {print "END:VCALENDAR"}