#!/usr/bin/env python # # pidgin/gaim timekeeping report generator, v1.0 import time, os, re, sys if len(sys.argv) > 1: os.chdir(sys.argv[1]) time_fmt = "%m/%d/%Y %I:%M:%S %p" day_fmt = time_fmt.partition(' ')[0] days = {} for fname in os.listdir("."): if not fname.endswith(".txt"): continue f = open(fname, "r") lines = f.readlines() f.close() on = re.search("@ (.+) ----", lines[1]) off = re.search("@ (.+) ----", lines[-1]) if not (on and off): raise Exception("unexpected:\n%s\n%s" % (lines[1], lines[-1])) gon = on .groups(1)[0] goff = off.groups(1)[0] gday = gon.partition(' ')[0] on = time.mktime(time.strptime(gon, time_fmt)) off = time.mktime(time.strptime(goff, time_fmt)) day = time.mktime(time.strptime(gday, day_fmt)) worked = (off - on) / 3600.0 days[day] = days.get(day, 0) + worked num = len(days) avg = sum([v for v in days.values()]) / num print ["%.1f" % v for v in days.values()] print "%d days, %.1f hours average" % (num, avg)