Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def epoch_time(d):
- """Seriously this is the best way to do this???"""
- return int((d - date(1970,1,1)).total_seconds())
- TODAY = date.today()
- ONE_DAY = timedelta(days=1).total_seconds()
- NUM_WEEKS = 2
- WEEK_AGO = TODAY - timedelta(weeks=NUM_WEEKS)
- TWO_WEEKS_AGO = TODAY - timedelta(weeks=NUM_WEEKS * 2)
- TWO_WEEKS_AGO_EPOCH = epoch_time(TWO_WEEKS_AGO)
- GoalMetadata = collections.namedtuple('GoalMetadata', ['today_count', 'week_count', 'prior_week_count'])
- Datapoint = collections.namedtuple('Datapoint', ['timestamp', 'value', 'comment', 'id', 'updated_at', 'requestid', 'daystamp', 'canonical'])
- beeminder_url = 'https://www.beeminder.com/api/v1/users/me.json'
- beeminder_url += ('?diff_since=%s&' % TWO_WEEKS_AGO_EPOCH) + urllib.urlencode(
- {'auth_token':secrets.BEEMINDER_AUTH_TOKEN})
- user_data = json.loads(urllib2.urlopen(beeminder_url).read())
- goal_metadata = collections.defaultdict(lambda: GoalMetadata(0, 0, 0))
- for goal in user_data['goals']:
- points = [Datapoint(**p) for p in goal['datapoints']]
- points = [p._replace(daystamp = datetime.strptime(p.daystamp, '%Y%m%d').date()) for p in points]
- for point in reversed(points):
- if point.daystamp == TODAY:
- goal_metadata[goal['title']] = goal_metadata[goal['title']]._replace(today_count=point.value + goal_metadata[goal['title']].today_count)
- if point.daystamp >= WEEK_AGO:
- goal_metadata[goal['title']] = goal_metadata[goal['title']]._replace(week_count=point.value + goal_metadata[goal['title']].week_count)
- elif point.daystamp >= TWO_WEEKS_AGO:
- goal_metadata[goal['title']] = goal_metadata[goal['title']]._replace(prior_week_count=point.value + goal_metadata[goal['title']].prior_week_count)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement