import datetime def genday(dt): now = datetime.date.today().strftime("%Y%m%dT000000Z") then = dt.strftime("%Y%m%d") di = "%i" ds = "%s" return '''BEGIN:VEVENT UID:%s@kumig.it DTSTAMP:%s DTSTART;VALUE=DATE:%s SUMMARY:%s days %s %s END:VEVENT ''' % (ds, now, then, di, ds, ds) def gencal(dt, string = None, futuredays = 14): offset = (datetime.date.today() - dt).days rv = '''BEGIN:VCALENDAR VERSION:2.0 PRODID:-//Klaus-Uwe Mitterer//DaysSince//EN METHOD:PUBLISH ''' if offset < 0: for day in range(offset * -1 + futuredays): rv += genday(dt - datetime.timedelta(days = day)) % ("%s%i" % (dt.strftime("%Y%m%d"), day), day, "until", dt.strftime("%Y/%m/%d")) else: for day in range(offset + futuredays): rv += genday(dt + datetime.timedelta(days = day)) % ("%s%i" % (dt.strftime("%Y%m%d"), day), day, "since", dt.strftime("%Y/%m/%d")) rv += "END:VCALENDAR" return rv def cal(dt, string = None): return iter([gencal(dt, string).replace("\n", "\r\n").encode()])