/ical2rem

The original iCal to Remind script, first released in 2005 or so?

Primary LanguagePerlMIT LicenseMIT

ical2rem

The original iCal to Remind script, first released in 2005.

Reads iCal files and outputs remind-compatible files. Tested ONLY with calendar files created by Mozilla Calendar/Sunbird. Use at your own risk.

License

In 2005, this was released with the Gnu Public License V2. However, I am changing it to the MIT License, since that provides greater freedom to do with this code what you want.

Copyright (c) 2005, 2007, 2019 Justin B. Alcorn

How I use Remind and Google Calendar together

  • My family has a Google Email domain, and our email addresses all end in the same domain. We all use Google Calendars and I want to mail reminders to each of the family members containing both Google Calendar and .reminder information.
  • Under my ~/.rem/ directory each family member has a directory. Each directory contains a standard remind file called 'reminders' that at the very least has the line "INCLUDE /home/jalcorn/.rem//ical2rem" and flag files indicating whether they want Daily or Weekly reminders. My reminders files references my standard .reminders file, and I also have a flag so if I run a Test run I'll get it. There's actually a lot more files (I have a big family).
  ./rem
    ./son1:
      drwxrwxr-x  2 jalcorn jalcorn 4096 Dec 12 14:02 .
      drwxr-xr-x 12 jalcorn jalcorn 4096 Dec 12 14:13 ..
      -rw-rw-r--  1 jalcorn jalcorn   51 Mar  3 06:10 ical2rem
      lrwxrwxrwx  1 jalcorn jalcorn   33 Oct 27  2016 son1.ics -> /home/jalcorn/calendars/son1.ics
      -rw-rw-r--  1 jalcorn jalcorn  976 Dec 12 14:02 reminders
      -rw-rw-r--  1 jalcorn jalcorn    0 Oct 27  2016 Weekly

    ./justin:
      drwxrwxr-x  2 jalcorn jalcorn  4096 Feb 27 08:29 .
      drwxr-xr-x 12 jalcorn jalcorn  4096 Dec 12 14:13 ..
      lrwxrwxrwx  1 jalcorn jalcorn    32 Oct 27  2016 son1.ics -> /home/jalcorn/calendars/son1.ics
      -rw-rw-r--  1 jalcorn jalcorn     0 Nov  7  2016 Daily
      lrwxrwxrwx  1 jalcorn jalcorn    34 Oct 27  2016 family.ics -> /home/jalcorn/calendars/family.ics
      -rw-rw-r--  1 jalcorn jalcorn 37320 Mar  3 06:10 ical2rem
      lrwxrwxrwx  1 jalcorn jalcorn    34 Oct 27  2016 justin.ics -> /home/jalcorn/calendars/justin.ics
      lrwxrwxrwx  1 jalcorn jalcorn    24 Nov  7  2016 reminders -> /home/jalcorn/.reminders
      lrwxrwxrwx  1 jalcorn jalcorn    34 Oct 27  2016 vmd.ics -> /home/jalcorn/calendars/vmd.ics
      -rw-rw-r--  1 jalcorn jalcorn     0 Oct 27  2016 Test
      -rw-rw-r--  1 jalcorn jalcorn     0 Nov  7  2016 Weekly
  • bin/getgooglecals.sh runs out of crontab and downloads whatever calendars I want. Note that we can also download organization calendars, I've included a public one here (Cleveland Heights Vocal Music Department calendar).
  • dailyreminders.sh is linked to weeklyreminders.sh and testreminders.sh so I can run it in different modes. The concatenate the various calendar outputs as a single remind file then send the reminders via email.

Example: .rem/son1/reminders file:

INCLUDE /home/jalcorn/.rem/defs.rem
INCLUDE /home/jalcorn/.rem/float
INCLUDE /home/jalcorn/.rem/son1/ical2rem
fset _weeks() coerce("STRING", (trigdate()-today())/7) + plural((trigdate()-today())/7, " week")
FSET _sfun(x) choose(x, -60, 30, 5, 0)
FSET oldfloat(y,m,d) trigger(MAX(realtoday(), date(y,m,d)))
FSET due(y,m,d) "(" + (date(y,m,d)-trigdate()) + ")"
SET fullmoon moondate(2)
REM [trigger(realtoday())] SPECIAL SHADE 145 70 100 %
REM [float(2019,4,15,105)] MSG File tax return [due(2017,4,15)]%
REM PRIORITY 9999 MSG %"%"%
INCLUDE /home/jalcorn/.rem/bdays
SET $LongDeg 81
SET $LongMin 11
SET $LongSec 11
SET $LatDeg 41
SET $LatMin 11
SET $LatSec 11
REM [trigger(moondate(2))] +1 MSG %"Full Moon%" %b%
fset _srtd() coerce("STRING", _no_lz(_am_pm(sunrise(today()))))
fset _sstd() coerce("STRING", _no_lz(_am_pm(sunset(today()))))
MSG Sun is up today from [_srtd()] to [_sstd()].%"%"%

Revision History

Version 0.6 2019-03-01

  • Publish on GitHub and change license to MIT License
  • Add supporting files and explanation of how I use it

version 0.5.2 2007-03-23

  - BUG: leadtime for recurring events had a max of 4 instead of DEFAULT_LEAD_TIME
  - remove project-lead-time, since Category was a non-standard attribute
  - NOTE: There is a bug in iCal::Parser v1.14 that causes multiple calendars to
          fail if a calendar with recurring events is followed by a calendar with no
          recurring events.  This has been reported to the iCal::Parser author.

version 0.5.1 2007-03-21

  - BUG: Handle multiple calendars on STDIN
  - add --heading option for priority on section headers

version 0.5 2007-03-21

  - Add more help options
  - --project-lead-time option
  - Supress printing of heading if there are no todos to print

version 0.4

  - Version 0.4 changes all written or inspired by, and thanks to Mark Stosberg
  - Change to GetOptions
  - Change to pipe
  - Add --label, --help options
  - Add Help Text
  - Change to subroutines
  - Efficiency and Cleanup

version 0.3

  - Convert to GPL (Thanks to Mark Stosberg)
  - Add usage

version 0.2

  - add command line switches
  - add debug code
  - add SCHED _sfun keyword
  - fix typos

version 0.1 - ALPHA CODE.