Rem2ics: Difference between revisions

From Skoll.CA
Jump to navigation Jump to search
m (2 revisions imported)
No edit summary
 
Line 13: Line 13:
# version 0.1 - 2006-06-09
# version 0.1 - 2006-06-09
# version 0.2 - 2010-10-27 (one-line patch by Shane Kerr <shane@time-travellers.org>)
# 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
# Converts output of remind -s to iCalendar
# usage: remind -s | rem2ics
# usage: remind -s -b2 | rem2ics
#
#
# THE FOLLOWING CODE IS RELEASED INTO THE PUBLIC DOMAIN
# THE FOLLOWING CODE IS RELEASED INTO THE PUBLIC DOMAIN
Line 22: Line 23:
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE
BEGIN {
BEGIN {
print "BEGIN:VCALENDAR"
  print "BEGIN:VCALENDAR"
print "VERSION:2.0"
  print "VERSION:2.0"
}
}
{
{
gsub("/","",$1)
  gsub("/","",$1)
print "BEGIN:VEVENT"
  print "BEGIN:VEVENT"
if ($5 != "*"){
  if ($5 != "*") {
printf("DTSTART:%dT%02d%02d00\n",$1,$5/60,$5%60)
    printf("DTSTART:%dT%02d%02d00\n",$1,$5/60,$5%60)
printf("DTEND:%dT%02d%02d00\n",$1,($5+$4)/60,($5+$4)%60)
    printf("DTEND:%dT%02d%02d00\n",$1,($5+$4)/60,($5+$4)%60)
print "SUMMARY:" substr($0,match($0,$7))
  } else {
} else {
    printf("DTSTART:%d\n",$1)
printf("DTSTART:%d\n",$1)
  }
print "SUMMARY:" substr($0,match($0,$6))
  print "SUMMARY:" substr($0,match($0,$6))
}
  print "END:VEVENT"
print "END:VEVENT"
}
}
END {print "END:VCALENDAR"}
END {print "END:VCALENDAR"}

Latest revision as of 16:03, 2 December 2023

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