Toggle navigation
首页
技术
骑行
羽毛球
资讯
联络我
登录
将佳明的活动自动同步到行者
2022-07-09
sport
> 每次佳明记录活动之后,都需要手动从 Garmin Connect 下载 fit 文件,然后再手动上传到行者网站,才能在行者 app 上查看活动记录,有没办法用自动的方式替代? ## 思路 整体上的流程分为: 1. 当 Garmin 有新的活动时,收到通知 2. 下载 Garmin 新的活动 3. 将新下载的活动上传到行者 ## 研究 Garmin 是否有开发者 api 来供第三方 app 来调用 在 Garmin 官网,找到 Garmin 开发者网站:[developer](https://developer.garmin.com/),其中 [Garmin Connect Developer Program](https://developer.garmin.com/gc-developer-program/overview/)下面有这样一段话: Sync Data Between Your Platform, Garmin Connect and Garmin Devices. 看起来是有机会。 在页面右边找到:Get Access to the Program,点击“Request Now”,发现需要填写很多信息,其中必填公司的相关信息,顿时产生不好的预感:难道想使用 Garmin API 必须要是公司才可? 在 stack overflow 找到了这篇:[Can I get access to the Garmin Health API as a hobbyist?](https://stackoverflow.com/questions/53454382/can-i-get-access-to-the-garmin-health-api-as-a-hobbyist),有类似需求的不止我一个人,不过里面明确提到,Garmin 不提供 API 给个人使用,看来直接通过 Garmin API 来获取活动这条路走不通。 ## 研究 Strava 是否有开发者 api 来供第三方 app 来调用 直接从 Garmin 获取活动的方式不行,因为 Garmin 账号跟 Strava 账号关联以后,可以自动同步 Garmin 的活动到 Strava,那么是否可以从 Strava 来间接获取活动呢? Strava 也有[开发者 API](https://developers.strava.com/),从他的 [Getting started](https://developers.strava.com/docs/getting-started/) 可以看到这样一段话: The Strava REST API includes data on athletes, segments, routes, clubs, and gear. It is free to use. The Strava API does not allow you to get data for all Strava public athletes, as you can see on our website. To get data on athletes, you will have to make an application and request that athletes sign in with Strava, and grant your application certain permissions using OAuth 2.0. You can get data on yourself without authentication for testing purposes. 看起来是有机会从 Starva 这边获取到活动。 ### Stava API 研究 在 [strava api document](https://developers.strava.com/docs/reference/) 这边根据文档的介绍,研究具体的做法,发现 Strava 并没有提供 api 来直接下载原始的 fit 活动档案,而是将解析过后的各种数据封装为资源,比如 Activity 封装了具体的活动,里面包含活动总体的 id、名称、距离、速度等,对于具体的活动数据(每个时间点的纬度、心率、功率等),他进一步封装成 StreamSet,并将心率、功率等数据拆分为不同的 stream。 行者可以识别的格式包含:GPX 和 FIT: * GPX,文字编码,简单,但是不支持功率数据 * FIT,佳明的格式,需要额外调用 Garmin SDK 来生成数据 转换成 GPX 文件,stack overflow 也提供了 demo:[Strava api to export GPX file of activity](https://stackoverflow.com/questions/68457696/strava-api-to-export-gpx-file-of-activity)。 研究到这里突然想到,Stava Web 界面不是可以下载原始的佳明 fit 档案吗?链接格式长这样:https://www.strava.com/activities/[id]/export_original,通过一个小程序模拟浏览器访问,验证了可以正常下载 fit 档案。 ## 将活动上传到行者 行者 app 没有提供 developer api,但是可以直接通过程序模拟在 web 上传。 行者的 web 上传地址为:https://imxingzhe.com/api/v4/upload_fits,除了要上传的活动文件以外,还包含几个参数: "device":设备,6 代表佳明 "sport":活动类型,3 代表骑行活动 "title":活动名称 成功将活动档案上传以后,request 会返回一个行者活动的 id,可以通过这个 id 在行者 app 上查看细节。 ## 监听新的活动 当 Strava 有新的活动产生时,可以通过 Strava 提供的 [Webhooks](https://developers.strava.com/docs/webhooks/) 来接受通知。想要成功注册 Webhooks,需要: 1. 在 Strava 注册 Application 2. 一个可以从公网访问到的地址 3. 在这个地址按照要求响应 Strava 发送的 Webhooks 注册请求 ## 效果 
×
本文为博主原创,如需转载,请注明出处:
http://www.supperxin.com
返回博客列表