Skip to content

Latest commit

 

History

History
103 lines (96 loc) · 5.37 KB

README.md

File metadata and controls

103 lines (96 loc) · 5.37 KB

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.7 2024-09-04

  • ISSUE 8: New version of remind complains if _sfun isn't defined. Output a header to define a function that does nothing if the function doesn't exist.

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.