#!/usr/bin/env python3
import json, os, urllib.request, urllib.error
from datetime import datetime,date,time,timedelta
from zoneinfo import ZoneInfo
TOKEN=os.environ['GOOGLE_FIT_ACCESS_TOKEN']; TZ='America/Argentina/Buenos_Aires'; z=ZoneInfo(TZ)
def ms(d): return int(datetime.combine(d,time.min,tzinfo=z).timestamp()*1000)
body={'aggregateBy':[{'dataSourceId':'derived:com.google.step_count.delta:com.google.android.gms:estimated_steps'},{'dataTypeName':'com.google.calories.expended'},{'dataTypeName':'com.google.distance.delta'},{'dataTypeName':'com.google.heart_rate.bpm'},{'dataTypeName':'com.google.weight'},{'dataTypeName':'com.google.body.fat.percentage'},{'dataTypeName':'com.google.height'},{'dataTypeName':'com.google.hydration'},{'dataTypeName':'com.google.nutrition'}], 'bucketByTime':{'period':{'type':'day','value':1,'timeZoneId':TZ}}, 'startTimeMillis':ms(date(2026,5,1)),'endTimeMillis':ms(date(2026,5,20))}
req=urllib.request.Request('https://www.googleapis.com/fitness/v1/users/me/dataset:aggregate',data=json.dumps(body).encode(),headers={'Authorization':f'Bearer {TOKEN}','Content-Type':'application/json;encoding=utf-8'},method='POST')
try:
 with urllib.request.urlopen(req,timeout=60) as r: data=json.loads(r.read().decode()); print(json.dumps(data.get('bucket',[{}])[0:2],indent=2)[:5000])
except urllib.error.HTTPError as e: print('ERR',e.code,e.read().decode())
