[Remind-Fans] From remind to Google calendar
Monty Zukowski
monty at codetransform.com
Mon Sep 17 18:07:45 EDT 2007
This script doesn't handle all day events. It doesn't create
recurring vevents either, just one event per line of output of remind
-s. It works for me though.
First I tried iCalendar.py, but that didn't seem to do timezones
automatically. Then I tried vObject.py. That handles timezones, but
the standard python example timezones weren't up to date for
US/Pacific. I noticed in vObject the program to_pst.py. It used
PyICU. That depended on ibm's ICU library. The debian package is
libicu36-dev, which I installed. Then PyICU's binaries wouldn't link
to that, so I built it from source instead. With that in place, I
finally seem to have timezone support working properly.
http://www.thescoop.org/archives/2007/07/31/django-ical-and-vobject/
helped me out a bit in figuring out some of the vevent details.
More information on IBM's ICU at http://www.icu-project.org/
import vobject, datetime
import subprocess, string
import PyICU
class Event:
def __init__(self, date, time, duration, msg):
self.date=date
self.time=time
self.duration=duration
self.msg=msg
self.dtstart=datetime.datetime.strptime(date+" " +time,
"%Y/%m/%d %I:%M%p")
self.dtend = self.dtstart + datetime.timedelta(minutes=int(duration))
def events():
output = subprocess.Popen(["remind", "-s",
"/home/monty/.reminders"], stdout=subprocess.PIPE).communicate()[0]
events = []
for line in string.split(output, '\n'):
if string.strip(line):
msg= string.split(line, 'MSG')[1]
body = string.split(line, 'repeat')[0]
t=string.split(body)
date = t[0]
time = t[5]
duration = t[3]
events.append(Event( date, time, duration, msg))
return events
pst = PyICU.ICUtzinfo.getInstance('US/Pacific')
cal = vobject.iCalendar()
cal.add('prodid').value='-//Remind2ical//codetransform.com//'
cal.add('version').value='2.0'
cal.add('method').value='PUBLISH'
events = events()
for e in events:
ev1 = cal.add('vevent')
ev1.add('dtstart').value = e.dtstart
ev1.add('dtend').value = e.dtend
ev1.add('dtstamp').value = datetime.datetime.now()
ev1.add('summary').value = e.msg
f = open('monty.ics', 'w')
f.write( cal.serialize())
f.close()
I hereby place this code in the public domain.
Monty
On 9/17/07, Daniel Martins <danielemc at gmail.com> wrote:
> > It was a pain to install
> > vObject and PyICU and the IBM ICU libraries, all just to get proper
> > timezones, however now I can finally get my 'remind' work schedule
> > into Google calendar.
>
> Great!
>
> Could you please send us the complete recipe to us?
>
> Daniel
>
> 2007/9/17, Monty Zukowski <monty at codetransform.com>:
> > Thanks for the quick response!
> >
> > I installed 03.01.02 and got that example to work. I originally had
> > Dec 22 as the end date, but moved it to Sept just to see if it would
> > end in this month...
> >
> > I have made my own little remind2ical.py script since nothing I could
> > find out there handled timezones well. It was a pain to install
> > vObject and PyICU and the IBM ICU libraries, all just to get proper
> > timezones, however now I can finally get my 'remind' work schedule
> > into Google calendar.
> >
> > Monty
> >
> > On 9/17/07, David F. Skoll <dfs at roaringpenguin.com> wrote:
> > > Monty Zukowski wrote:
> > >
> > > > What I'm trying to say is I'm working 9-2 Mondays & Wednesdays between
> > > > Sept. 15 2007 and Sept 22 2007 (exclusive).
> > >
> > > That's just two days, so you could do it as two simple separate
> reminders.
> > >
> > > If you have the latest version of Remind:
> > >
> > > REM Mon Wed AT 9:00 DURATION 5:00 FROM 15 Sep 2007 UNTIL 22 Sep 2007 MSG
> ...
> > >
> > > You need at least 03.01.01 to get the "FROM..." clause.
> > >
> > > > REM Mon Wed AT 9:00 DURATION 5:00 repeat UNTIL 22 Sep SATISFY
> > > > [trigdate() >= '2007-09-15'] MSG Monty working
> > >
> > > "repeat" is not a Remind keyword, so it's as if you wrote:
> > >
> > > REM Mon Wed AT 9:00 DURATION 5:00 MSG repeat ...
> > >
> > > Regards,
> > >
> > > David.
> > > _______________________________________________
> > > Remind-fans mailing list
> > > Remind-fans at lists.whatexit.org
> > > http://lists.whatexit.org/mailman/listinfo/remind-fans
> > >
> > _______________________________________________
> > Remind-fans mailing list
> > Remind-fans at lists.whatexit.org
> > http://lists.whatexit.org/mailman/listinfo/remind-fans
> >
>
>
> _______________________________________________
> Remind-fans mailing list
> Remind-fans at lists.whatexit.org
> http://lists.whatexit.org/mailman/listinfo/remind-fans
>
>
More information about the Remind-fans
mailing list