Skip to content

Instantly share code, notes, and snippets.

@motiejus
Created October 20, 2012 16:30
Show Gist options
  • Select an option

  • Save motiejus/3923848 to your computer and use it in GitHub Desktop.

Select an option

Save motiejus/3923848 to your computer and use it in GitHub Desktop.
Timelog daily report
#!/usr/bin/env python
import os
import sys
from datetime import datetime, timedelta
try:
from gtimelog import TimeWindow
from gtimelog import Settings
except ImportError:
from gtimelog.main import TimeWindow
from gtimelog.main import Settings
def usage(prog):
print ("Usage: %s <from> <to>" % prog)
print ("")
print ("<from>, <to> are dates inclusive. For example, if")
print ("you want your timelog from 2011-09-19 to 2011-09-30,")
print ("run %s 2011-09-19 2011-09-30." % prog)
print ("")
sys.exit(1)
def main(begin, end):
# Parsing command line arguments
begin = datetime.strptime(begin, "%Y-%m-%d")
end = datetime.strptime(end, "%Y-%m-%d")
configdir = os.path.expanduser(
os.environ.get('GTIMELOG_HOME') or '~/.gtimelog')
settings_file = os.path.join(configdir, 'gtimelogrc')
settings = Settings()
settings.load(settings_file)
vm = settings.virtual_midnight
data = lambda: open(os.path.join(configdir, 'timelog.txt'), "r")
# Print every days' working time
i = begin
total = 0.0
while i <= end:
window = TimeWindow(data(), i, i + timedelta(days=1), vm)
(work, slack) = window.totals()
if work.seconds > 0:
h = work.seconds // 3600
m = (work.seconds - h * 3600) // 60
fl = h + m/60.0
print ("%s %02d:%02d (%.2f)" % (i.strftime("%F"), h, m, fl))
total += fl
i += timedelta(days=1)
minutes = (total - int(total)) * 60.0
print " Total: %3d:%02d (%.2f)" % (int(total), int(minutes), total)
if __name__ == "__main__":
if len(sys.argv) != 3:
usage(sys.argv[0])
else:
main(sys.argv[1], sys.argv[2])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment