#!/usr/bin/python # # Print a bunch of dates, one week apart, replacing dates at the beginning # of standard input. # import string, sys from time import gmtime,mktime ndays = [ 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ] step = 7 skipdays = [ 0, 0, 0, 0, 0, 0, 0 ] countdays = [ 1, 1, 1, 1, 1, 1, 1 ] europe = 0 while sys.argv[1][0] == '-': if sys.argv[1] == '-step': step = string.atoi(sys.argv[2]) sys.argv = sys.argv[2:] if sys.argv[1] == '-e': europe = 1 sys.argv = sys.argv[1:] if sys.argv[1] == '-daily': step = 1 # Skip Saturday and Sunday skipdays[5] = 1 skipdays[6] = 1 sys.argv = sys.argv[1:] if sys.argv[1] == '-on': step = 1 skipdays = [ 1, 1, 1, 1, 1, 1, 1 ] for num in string.splitfields(sys.argv[2], ','): skipdays[string.atoi(num)] = 0 sys.argv = sys.argv[2:] if sys.argv[1] == '-repeat': for num in string.splitfields(sys.argv[2], ','): n = string.atoi(num) countdays[n] = countdays[n] + 1 sys.argv = sys.argv[2:] if sys.argv[1] == '-skip': step = 1 skipdays = [ 0, 0, 0, 0, 0, 0, 0 ] for num in string.splitfields(sys.argv[2], ','): skipdays[string.atoi(num)] = 1 sys.argv = sys.argv[2:] year = string.atoi(sys.argv[1]) month = string.atoi(sys.argv[2]) day = string.atoi(sys.argv[3]) if year < 93: year = year + 100 (x,x,x,x,x,x,weekday,x,x) = gmtime(mktime(year + 1900, month, day, 10, 0, 0, 0, 0, 0)) thisdaycount = 0 if len(sys.argv) > 4: step = string.atoi(sys.argv[4]) if (year & 3) == 0: ndays[2] = 29 line = sys.stdin.readline() while line != '': if line[0:5] == '
': head = '' line = line[5:] else: head = '' if not (line[0] in ['0','1','2','3','4','5','6','7','8','9','?']): sys.stdout.write(head + line) line = sys.stdin.readline() continue else: if europe == 1: sys.stdout.write('%s%02d/%02d/%02d%s' % (head, day, month, year % 100, line[8:])) else: sys.stdout.write('%s%02d/%02d/%02d%s' % (head, year % 100, month, day, line[8:])) line = sys.stdin.readline() thisdaycount = thisdaycount + 1 if thisdaycount < countdays[weekday]: continue day = day + step (x,x,x,x,x,x,weekday,x,x) = gmtime(mktime(year + 1900, month, day, 10, 0, 0, 0, 0, 0)) thisdaycount = 0 while skipdays[weekday]: day = day + 1 weekday = (weekday + 1) % 7 if day > ndays[month]: day = day - ndays[month] month = month + 1 if month > 12: month = 1 year = year + 1 if (year & 3) == 0: ndays[2] = 29 else: ndays[2] = 28