Created
May 31, 2018 13:06
-
-
Save fabulator/4e40dd59cb5dcaafcc86621701b4c556 to your computer and use it in GitHub Desktop.
How to push Fitbit heart data to Endomondo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require('cross-fetch/polyfill'); | |
const ENDOMONDO = require('endomondo-api-handler'); | |
const FITBIT = require('fitbit-api-handler'); | |
const { | |
FITBIT_CLIENT_ID, | |
FITBIT_SECRET, | |
FITBIT_TOKEN, | |
ENDOMONDO_LOGIN, | |
ENDOMONDO_PASSWORD, | |
ENDOMONDO_WORKOUT_ID, | |
} = require('./env'); | |
const EndomondoApi = ENDOMONDO.Api; | |
const EndomondoMobileApi = ENDOMONDO.MobileApi; | |
const FitbitApi = FITBIT.Api; | |
const { rewriteHeartRateData, replaceWorkout } = ENDOMONDO; | |
const { INTRADAY_RESOURCES } = FITBIT; | |
const endomondoApi = new EndomondoApi(); | |
const endomondoMobileApi = new EndomondoMobileApi(); | |
const fitbitApi = new FitbitApi(FITBIT_CLIENT_ID, FITBIT_SECRET); | |
fitbitApi.setAccessToken(FITBIT_TOKEN); | |
(async () => { | |
await endomondoApi.login(ENDOMONDO_LOGIN, ENDOMONDO_PASSWORD); | |
await endomondoMobileApi.login(ENDOMONDO_LOGIN, ENDOMONDO_PASSWORD); | |
const workout = await endomondoApi.getWorkout(ENDOMONDO_WORKOUT_ID); | |
if (!workout.hasGPSData()) { | |
console.log('Workout does not have GPS data'); | |
return; | |
} | |
if (workout.getMaxHeartRate()) { | |
console.log('Workout already have HR data'); | |
return; | |
} | |
const hrData = await fitbitApi.getIntradayData( | |
INTRADAY_RESOURCES.HEART, | |
workout.getStart(), | |
workout.getEnd().plus({ minutes: 1 }), | |
'1sec', | |
); | |
const rewrittenWorkout = rewriteHeartRateData(workout, hrData.sets.map((item) => { | |
return { | |
time: item.time, | |
hr: item.value, | |
}; | |
})); | |
rewrittenWorkout.setAvgHeartRate(hrData.total); | |
await replaceWorkout(rewrittenWorkout, endomondoApi, endomondoMobileApi); | |
console.log(rewrittenWorkout.toString()); | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment