Private
Public Access
1
0

imports nk incl summary stats

This commit is contained in:
Sander Roosendaal
2021-04-05 06:37:28 +02:00
parent 6be21a0a8a
commit 18c59d0fe4
9 changed files with 180 additions and 12 deletions

View File

@@ -210,8 +210,11 @@ def add_workout_from_data(user,nkid,data,strokedata,source='nk',splitdata=None,
elapsedTime = data["elapsedTime"]
totalDistanceGps = data["totalDistanceGps"]
totalDistanceImp = data["totalDistanceImp"]
intervals = data["intervals"]
intervals = data["intervals"] # add intervals
oarlockSessions = data["oarlockSessions"]
deviceId = data["deviceId"] # you could get the firmware version
summary = get_nk_allstats(data,strokedata)
# oarlock inboard, length, boat name
if oarlockSessions:
@@ -220,6 +223,11 @@ def add_workout_from_data(user,nkid,data,strokedata,source='nk',splitdata=None,
oarLength = oarlocksession["oarLength"] # cm
oarInboardLength = oarlocksession["oarInboardLength"] # cm
seatNumber = oarlocksession["seatNumber"]
else:
boatName = ''
oarLength = 289
oarInboardLength = 88
seatNumber = 1
workouttype = "water"
boattype = "1x"
@@ -232,6 +240,9 @@ def add_workout_from_data(user,nkid,data,strokedata,source='nk',splitdata=None,
'workouttype': workouttype,
'boattype': boattype,
'nkid':nkid,
'inboard': oarInboardLength/100.,
'oarlength': oarLength/100.,
'summary':summary,
}
session = requests.session()
@@ -248,11 +259,125 @@ def add_workout_from_data(user,nkid,data,strokedata,source='nk',splitdata=None,
except KeyError:
workoutid = 1
# evt update workout summary
# return
return workoutid,""
def get_nk_intervalstats(workoutdata,strokedata):
intervals = workoutdata['intervals']
separator = "|"
stri = "Workout Details\n"
stri += "#-{sep}SDist{sep}-Split-{sep}-SPace-{sep}-Pwr-{sep}-SPM--{sep}-AvgHR-{sep}DPS-\n".format(
sep=separator)
i = 0
for interval in intervals:
id = interval['id']
sdist = interval['totalDistanceGps']
avgpace = interval['avgPaceGps']/1000.
avgpacetd = timedelta(seconds=avgpace)
newpacestring = dataprep.strfdelta(avgpacetd)
elapsedSeconds = interval['elapsedTime']/1000. # secs
elapsedTime = datetime.utcfromtimestamp(elapsedSeconds)
newsplitstring = "%s.%i" % (elapsedTime.strftime("%M:%S"), elapsedTime.microsecond/100000)
pwr = interval['avgPower']
avghr = interval['avgHeartRate']
spm = interval['avgStrokeRate']
dps = interval['distStrokeGps']
stri += "{i:0>2}{sep}{sdist:0>5}{sep}{split}{sep}{space}{sep} {pwr:0>3} {sep}".format(
i=i + 1,
sdist=int(float(sdist)),
split=newsplitstring,
space=newpacestring,
pwr=int(pwr),
sep=separator,
)
stri += " {spm} {sep} {avghr:0>3} {sep}{dps:0>4.1f}\n".format(
sep=separator,
avghr=avghr,
spm=spm,
dps=dps,
)
i += 1
return stri
def get_nk_summary(workoutdata,strokedata):
name = workoutdata['name']
avgpace = workoutdata['avgPaceGps']/1000. # secs
avgpacetd = timedelta(seconds=avgpace)
avgpacestring = dataprep.strfdelta(avgpacetd)
elapsedSeconds = workoutdata['elapsedTime']/1000. # secs
elapsedTime = datetime.utcfromtimestamp(elapsedSeconds)
timestring = "%s.%i" % (elapsedTime.strftime("%H:%M:%S"), elapsedTime.microsecond/100000)
dist = workoutdata['totalDistanceGps']
spm = workoutdata['avgStrokeRate']
avghr = workoutdata['avgHeartRate']
avgdps = workoutdata['distStrokeGps']
maxhr = strokedata['heartRate'].max()
pwr = workoutdata['avgPower']
sep = "|"
stri1 = "Workout Summary - " + name + "\n"
stri1 += "--{sep}Total{sep}--Total---{sep}--Avg--{sep}-Avg-{sep}-Avg--{sep}-Avg-{sep}-Max-{sep}-Avg\n".format(
sep=sep)
stri1 += "--{sep}Dist-{sep}--Time----{sep}-Pace--{sep}-Pwr-{sep}-SPM--{sep}-HR--{sep}-HR--{sep}-DPS\n".format(
sep=sep)
stri1 += "--{sep}{dist:0>5.0f}{sep}".format(
sep=sep,
dist=dist,
)
stri1 += timestring + sep + avgpacestring
stri1 += "{sep}{avgpower:0>5.1f}".format(
sep=sep,
avgpower=pwr,
)
stri1 += "{sep} {avgsr:2.1f} {sep}{avghr:0>5.1f}{sep}".format(
avgsr=spm,
sep=sep,
avghr=avghr
)
stri1 += "{maxhr:0>5.1f}{sep}{avgdps:0>4.1f}\n".format(
sep=sep,
maxhr=maxhr,
avgdps=avgdps
)
return stri1
return stri1
def get_nk_allstats(data,workoutdata):
stri = get_nk_summary(data, workoutdata) + \
get_nk_intervalstats(data, workoutdata)
return stri
def get_workout(user,nkid):
r = Rower.objects.get(user=user)
if (r.nktoken == '') or (r.nktoken is None):
@@ -277,9 +402,11 @@ def get_workout(user,nkid):
# get strokes
url = NK_API_LOCATION+"api/v1/sessions/strokes"
response = requests.get(url,headers=headers,params=params)
if response != 200:
# error handling
pass
if response.status_code != 200:
# error handling and logging
return {},pd.DataFrame()
jsonData = response.json()
@@ -314,8 +441,8 @@ def get_workout(user,nkid):
response = requests.get(url, headers=headers,params=params)
if response.status_code != 200:
# error handling
pass
# error handling and logging
return {},df
jsondata = response.json()
workoutdata = {}
@@ -323,8 +450,4 @@ def get_workout(user,nkid):
if str(w['id']) == str(nkid):
workoutdata = w
# not to_csv and run upload API!
#strokedata = df.to_json(orient='records')
#df.to_csv('~/Downloads/nk_logbook.csv')
return workoutdata, df