#! /usr/bin/env python3 # -*- coding: utf-8 -*- """Timewarrior adapter for `argos `.""" # timewarrior # v1.0 # Tobias Schmidl # schtobia # Greps and formats data from timewarrior. # # python,timew # https://github.com/schtobia/argos-timewarrior/blob/master/timewarrior.py import functools import locale from datetime import datetime, timedelta from timew import TimeWarrior # type: ignore TW = TimeWarrior() TIMEFORMATTER = '%Y%m%dT%H%M%S%z' locale.setlocale(locale.LC_ALL, '') RESULTS = sorted(map( lambda x: { 'start': datetime.strptime(x['start'], TIMEFORMATTER).astimezone(tz=None), 'end': datetime.strptime(x['end'], TIMEFORMATTER).astimezone(tz=None) if 'end' in x else datetime.now().astimezone(tz=None), 'id': x['id'], 'tags': x['tags'] }, TW.summary()), key=lambda x: x['start']) print("⌛ {}\n-----".format( str(functools.reduce(lambda total, x: total + x['end'] - x['start'], RESULTS, timedelta())).split(sep='.', maxsplit=1)[0] )) print( " | font=monospace | size=8\n".join( map( lambda x: str({ 'start': datetime.strftime(x['start'], "%x %X"), 'end': datetime.strftime(x['end'], "%x %X"), 'tags': x['tags'] }), RESULTS)), "| font=monospace | size=8")