import os import csv def sec_to_min(sec): """converts seconds to MM:SS""" mins = int(sec / 60) sec_left = sec % 60 return str(mins).zfill(2) + ":" + str(sec_left).zfill(2) def sesh_to_log(session, filename): """writes session dict to logfile specified""" fields = [] for field in session.keys(): fields.append(field) if os.path.exists(filename): logmode = 'a' else: logmode = 'w' with open(filename, logmode) as logfile: writer = csv.DictWriter(logfile, fieldnames=fields) if logmode == 'w': writer.writeheader() writer.writerow(session) def per_tag_per_day(file): """returns list of dicts, each has date, tag and time spent per tag""" reader = csv.DictReader(file) rows = [] # need to make into list to transverse backwards for row in reader: rows.append(row) # list of dicts; each dict is tag: time_spent day_times = [] cur = -1 for i in range(len(rows)): date = rows[i]['date'] tag = rows[i]['tag'] if i > 0 and date == rows[i-1]['date']: if rows[i]['type'] == 'focus': day_times[cur][tag] = day_times[cur].get(tag, 0) + int(rows[i]['elapsed']) else: cur += 1 day_times.append({"date": date, tag: int(rows[i]['elapsed'])}) return day_times