不知道有同样喜欢跑步的程序员么, 我写了个项目让你可以打造自己的跑步主页 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
zouzou0208
V2EX    程序员

不知道有同样喜欢跑步的程序员么, 我写了个项目让你可以打造自己的跑步主页

  zouzou0208 2020-10-10 09:30:47 +08:00 17330 次点击
这是一个创建于 1876 天前的主题,其中的信息可能已经有所发展或是发生改变。

我跑步超过 20 年了~用不同 APP 记录自己跑步的数据已经超过 9 年.今年年初因为 runtastic 下架,决定自己管理自己跑步数据,顺便学下 react,便做了这个项目

目前支持:

  • Strava
  • Nike Run Club
  • Runtastic(Adidas Run)

后续会支持

  • 佳明,佳明中国
  • 悦跑圈
  • nike+strava, runtastic+strava

项目地址 https://github.com/yihong0618/running_page

可预览的地址

截图:

image

ezgif-1-50e865bf9558

第 1 条附言    2020-10-10 11:36:50 +08:00

忘了说,点击total和缩放地图是有彩蛋的 total + 缩放: image

第 2 条附言    2020-10-10 11:46:03 +08:00

大部分能点击的地方都是可以点击的。 可以点击单个跑步的地图: image 列表也支持排序 image

第 3 条附言    2020-10-21 23:53:25 +08:00
新增加了 佳明 佳明中国的支持

keep 也即将支持,我搞定了接口和加密,因为我数据量不够,用 keep 的同学有私信帮帮我的么?

之后会支持悦跑圈。
非常感谢大家。
第 4 条附言    2021-01-26 08:50:17 +08:00

更新:

新增加了咕咚的支持 。

至此,running_page 支持国内大部分主流运动 app --> keep, 咕咚,悦跑圈,佳明,国外的 --> garmin,Rutastic, strava, nike 支持。欢迎跑步的同学来玩。

image

169 条回复    2025-01-09 23:30:59 +08:00
1  2  
chaleaoch
    1
chaleaoch  
   2020-10-10 09:43:27 +08:00   3
厉害了厉害了.
jokerli
    2
jokerli  
   2020-10-10 09:45:07 +08:00   1
哇 这个很不错了 可以做成小程序
qping
    3
qping  
   2020-10-10 09:47:49 +08:00
数据从哪来的啊
zouzou0208
    4
zouzou0208  
OP
   2020-10-10 09:48:35 +08:00
@qping 项目介绍里有
qping
    5
qping  
   2020-10-10 09:49:01 +08:00
@qping 知道了,没仔细看内容,被图片吸引了眼球。。。。做的很赞
qping
    6
qping  
   2020-10-10 09:50:07 +08:00   1
@zouzou0208 国内的 app,像咕咚跑步会支持么
zouzou0208
    7
zouzou0208  
OP
   2020-10-10 09:50:12 +08:00
@qping Runtastic 我算是逆向的接口, nike 也是找 api(抓包啥的), strava 有开发者的 api. 悦跑圈我算是搞定了数据,佳明有 api~
zouzou0208
    8
zouzou0208  
OP
   2020-10-10 09:50:51 +08:00
@qping 咕咚我尝试了,理论可行,但是有一些路要走.可能需要时间.
zouzou0208
    9
zouzou0208  
OP
   2020-10-10 09:51:15 +08:00
@qping keep 比较麻烦.加密做的挺多的.
LostPrayers
    10
LostPrayers  
   2020-10-10 09:51:54 +08:00   1
有点好奇这里面这个 gpx 数据, 是有一个通用标准吗?
可以自己写个 app 记录这些信息吗(手机可能没运动手环那些准确,但是可以简单模拟嘛)
qping
    11
qping  
   2020-10-10 09:53:43 +08:00   1
@zouzou0208 加油
zouzou0208
    12
zouzou0208  
OP
   2020-10-10 09:54:13 +08:00
@LostPrayers 是的.属于通用的交互格式,你可以 google 查一下.一般都用这个.另外还有两种 tcx 和 fit 佳明用的是 fit 但是可以互相转换. 地图也有特殊的交换格式叫 geojson.
2. 可以的
akiossdev
    13
akiossdev  
   2020-10-10 09:57:21 +08:00   1
羡慕健康的程序员
z1154505909
    14
z1154505909  
   2020-10-10 10:28:20 +08:00   1
跑了快十年了,最开始没有 APP 记录,14 年开始用 APP 记录不过现在那些 APP 账号都忘了,17 年开始用悦跑圈,这周悦跑圈累计 1w 了,
15 年开始骑行,也差不多五万公里了
以前也想过要不要弄个地图,研究了下,觉得太麻烦了,就放弃了.哈哈哈
zouzou0208
    15
zouzou0208  
OP
   2020-10-10 10:33:22 +08:00
@z1154505909 哈哈悦跑圈理论可以搞定。如果搞定了我 at 你。就是研究接口,生成数据麻烦。我 runtastic 就是专门搞了个 repo https://github.com/yihong0618/Runtastic
hjdtl
    16
hjdtl  
   2020-10-10 11:16:28 +08:00   1
有点好奇,为啥有这么多的一两公里的记录
zouzou0208
    17
zouzou0208  
OP
   2020-10-10 11:21:06 +08:00
@hjdtl 就是跑了 1-2km 。。。跑步比较看心情。
Lax
    18
Lax  
   2020-10-10 11:44:52 +08:00   1
赞啊!
我也曾想过自己管理数据,大部分 app 都没提供导出 gpx 功能,干脆写了个 app 用自己的旧手机作记录,还没做集中展示
zouzou0208
    19
zouzou0208  
OP
   2020-10-10 11:46:58 +08:00
@Lax 准确说是大部分“国内” app 哈哈。
yanyueio
    20
yanyueio  
   2020-10-10 11:52:52 +08:00   1
"我跑步超过 20 年了"---了不起。
haowen737
    21
haowen737  
   2020-10-10 11:58:11 +08:00   1
zouzou0208
    22
zouzou0208  
OP
   2020-10-10 11:59:08 +08:00
@yanyueio 哈哈,小学开始,那时候不懂就瞎跑。
zouzou0208
    23
zouzou0208  
OP
   2020-10-10 12:00:02 +08:00
@haowen737 谢谢~
missdeer
    24
missdeer  
   2020-10-10 12:02:40 +08:00   1
被图片吸引了眼球,佩服楼主毅力
zouzou0208
    25
zouzou0208  
OP
   2020-10-10 12:04:57 +08:00
@missdeer 谢谢
AmosAlbert
    26
AmosAlbert  
   2020-10-10 12:11:33 +08:00   1
我的毕设有着落啦,
guanaco
    27
guanaco  
   2020-10-10 12:19:36 +08:00 via iPhone   1
我就想知道用什么替换 runtastic,10.1 还可以用,但到 6 号就不行了……
zouzou0208
    28
zouzou0208  
OP
   2020-10-10 12:23:11 +08:00   1
@guanaco 你没赶上。。。runtastic 需要把国家地区改成中国(大陆)以外的地方(因为在大陆下架了),没改的话会封停账号。我比较建议 Nike Run Club 。当然你有预算的话 strava 买高级会员也是可行的。如果不在意数据的话可以用国内的 app, keep 应该做的算是好的(其实我并不推荐)。
guanaco
    29
guanaco  
   2020-10-10 12:29:20 +08:00 via iPhone
@zouzou0208 我试试现在修改是否行,主要是闪退,在闪退之前完成修改
drawstar
    30
drawstar  
   2020-10-10 12:31:57 +08:00   1
这个项目好
aleung
    1
aleung  
   2020-10-10 12:38:23 +08:00   1
做得不错,等着支持 garmin 。

另外,可以通过 gpx 导入数据吗?草草扫了一眼 readme 好像没有提到。

预览网站是不是没有彩蛋功能?不知道怎么触发。
zouzou0208
    32
zouzou0208  
OP
   2020-10-10 12:44:14 +08:00
@aleung 有的,用滚轮缩小地图。

不完全是 strava 就是用的 api 。不同软件不同的方式

感谢
xrr2016
    33
xrr2016  
   2020-10-10 12:45:50 +08:00
只用跑步机跑的咋办, 也没用 APP 记录...
zouzou0208
    34
zouzou0208  
OP
   2020-10-10 12:46:40 +08:00
@xrr2016 好像不行~
xrr2016
    35
xrr2016  
   2020-10-10 12:47:25 +08:00   1
@zouzou0208 哈哈,项目挺好的,已 star
abinnz
    36
abinnz  
   2020-10-10 12:48:53 +08:00 via iPhone
能支持 Keep 吗
zouzou0208
    37
zouzou0208  
OP
   2020-10-10 12:50:09 +08:00
@abinnz 有点难,我当时尝试 keep 数据没搞定。等我支持完其它几个会再尝试下。
geniusmyn
    38
geniusmyn  
   2020-10-10 12:57:45 +08:00 &nbs; 1
厉害了厉害了.
abinnz
    39
abinnz  
   2020-10-10 13:01:26 +08:00 via iPhone   1
很棒,我也抓 Keep 接口试下
sheeta
    40
sheeta  
   2020-10-10 13:01:42 +08:00 via Android
楼主,本来我也打算基于 mapbox 做一个类似的,但是 mapbox 本地化实在蛋疼,表面上看着符合国内的地图标准,实际上某些地区还是有问题,自己用还好,做成产品给别人用估计会被喷,所以我就放弃了。
zouzou0208
    41
zouzou0208  
OP
   2020-10-10 13:03:49 +08:00
感谢反馈
@sheeta mapbox 有部分本地化的,这块有个坑,我当时研究了好久,你可以参考下我代码里设置中文那块~。
zouzou0208
    42
zouzou0208  
OP
   2020-10-10 13:04:14 +08:00
@abinnz 如果搞定欢迎 pr, 太感谢了。
atonku
    43
atonku  
   2020-10-10 13:07:27 +08:00   2
你随便写,能让我跑起来算我输
mxydsg8858
    44
mxydsg8858  
   2020-10-10 13:33:34 +08:00
看起来很不错
mxydsg8858
    45
mxydsg8858  
   2020-10-10 13:35:28 +08:00   1
最后一张图很像跑跑卡丁车里面的一个地图:'森林发卡'
zouzou0208
    46
zouzou0208  
OP
   2020-10-10 13:36:41 +08:00
@mxydsg8858 大连的跨海大桥。。。
RomanCavalry
    47
RomanCavalry  
   2020-10-10 13:43:18 +08:00
really cool
EIlenZe
    48
EIlenZe  
   2020-10-10 13:43:21 +08:00   1
说起来 iPhone 刚开始那会儿 runtastic 就有了 那么多年了 hhh 以前骑车都要开着记录一下
bitholic
    49
bitholic  
   2020-10-10 13:46:09 +08:00   1
cool
s247769541
    50
s247769541  
   2020-10-10 13:46:52 +08:00   1
很棒~ 偶尔跑步,不像楼主跑这么多 太厉害了
zouzou0208
    51
zouzou0208  
OP
   2020-10-10 13:47:38 +08:00
@EIlenZe 是啊,所以生气,换了 nrc 之后决定自己备份一份数据
Fooleap
    52
Fooleap  
   2020-10-10 14:00:52 +08:00   1
很有意思,收藏之。
一样的喜欢跑步和地图,也折腾过在博客,简单显示跑步地图。
zouzou0208
    53
zouzou0208  
OP
   2020-10-10 14:03:14 +08:00
@Fooleap 哇塞,我很早之前尝试搞咕咚的数据看到过你的博客。非常漂亮。有缘。不过你当时的方法好像不行了~感谢你。
z1154505909
    54
z1154505909  
   2020-10-10 14:03:20 +08:00
@zouzou0208 这种研究精神,点赞,我比较懒
wang2018
    55
wang2018  
   2020-10-10 14:14:30 +08:00   1
非常棒,科技感十足,超酷,支持
slamDunkLINk
    56
slamDunkLINk  
   2020-10-10 14:19:14 +08:00   1
楼主能支持小米运动吗,虽然可能量比较少?
zouzou0208
    57
zouzou0208  
OP
   2020-10-10 14:21:12 +08:00
@slamDunkLINk 有可能行。我没尝试,但是小米的接口一般不那么难(希望)。我记在 TODO List 了,谢谢反馈
ixinshang
    58
ixinshang  
   2020-10-10 14:21:20 +08:00   1
最开始用很古老的 app 记录,但是不利于导出。
后面换成了行者,但是这 APP 现在吃相有点难看,现在正在想是否有其他工具。
aleung
    59
aleung  
   2020-10-10 14:30:24 +08:00   1
@zouzou0208 #32

滚轮缩小后可以看到跑过的国家、省份等信息,但是没有显示打卡图和 over 10km runs,依然是 activities 列表。

我意思是如果我自己已经有一堆 gpx 文件了,是不是可以放到哪个目录里再执行什么命令做处理?你现在的脚本似乎是将数据下载和数据处理合在一起的。我有些以前爬山记录的 gpx,如果能用你这个应用可视化也是相好的。Garmin Connect 也可以手工下载 gpx 文件。

另外,我也搜索到一个项目可以批量下载 garmin gpx 的,不过我还没空测试中国区能不能用,估计要换个 API endpoint 吧: https://github.com/pe-st/garmin-connect-export
JimmyTinsley
    60
JimmyTinsley  
   2020-10-10 14:31:08 +08:00   1
厉害!!!
ZhaoHongXuan
    61
ZhaoHongXuan  
   2020-10-10 14:36:56 +08:00   1
很酷,就是跑步记录都在 keep 上面,这几年也有 6000km 了,同时程序员差距好大,惭愧惭愧
zouzou0208
    62
zouzou0208  
OP
   2020-10-10 14:39:00 +08:00
@aleung
1. 是的,我准备用类似的项目
2. 佳明中国和佳明不是一套接口,有点麻烦,但是能搞定
3. 你可以把 gpx 扔进去,但是得改下命名。改小一点的数字就行(我是利用 unixtime 命名)
4. 你得运行这个命令(在 GitHub Actions 中你能看到, 更改一下你的变量)
```
python scripts/gen_svg.py --from-db --title "${{ env.TITLE }}" --type github --athlete "${{ env.ATHLETE }}" --special-distance 10 --special-distance2 20 --special-color yellow --special-color2 red --output assets/github.svg --use-localtime --min-distance 0.5
```

爬山的理论可以的,我之前做了,后来就是完全的跑步数据了(你可以参考我 blog 那块),因为计算心率和速度会有噪声。

非常感谢反馈
PS. 可以在 issues 中提,或者提 pr, 没意外的话我都会解决
zouzou0208
    63
zouzou0208  
OP
   2020-10-10 14:40:01 +08:00
@aleung 而且得先 sync 再生成 svg.
Fooleap
    64
Fooleap  
   2020-10-10 14:45:00 +08:00
@zouzou0208 #53 嗯嗯,后面那个方法搞不出来咕咚的数据了。我后面主要用 Nike Run Club,算是比较稳定,就是突然砍掉分享图片的功能了。
zouzou0208
    65
zouzou0208  
OP
   2020-10-10 14:46:40 +08:00
@Fooleap 图片分享功能可以切换成 hk 解决,nike 接口和转换成 gpx 我代码中的可以参考~。我也觉得大陆用户目前 nrc 是相对好一些的选择。
    66
Fooleap  
   2020-10-10 14:49:50 +08:00
@zouzou0208 #65
这样啊,我还以为都没有了。好的谢谢,我有时间研究下。
m3s
    67
m3s  
   2020-10-10 15:00:44 +08:00   1
感谢感谢 有空研究下 我用的是悦跑圈
Cloutain
    68
Cloutain  
   2020-10-10 15:02:15 +08:00   1
坚持跑步一个月了 ,心率下降了很多,加油!!
ershierdu
    69
ershierdu  
   2020-10-10 15:09:49 +08:00   1
请教几个问题:
1.看楼主天天跑(还有一天跑两次的记录),膝盖撑得住吗?怎么保护的…
2.看楼上的回复,楼主在东北,冬天怎么搞…我在长三角,10 多度就有点受不了了…
bonfy
    70
bonfy  
   2020-10-10 15:09:52 +08:00   1
@zouzou0208 LZ 跑这么多 怎么保养膝盖的?
zouzou0208
    71
zouzou0208  
OP
   2020-10-10 15:11:37 +08:00
@ershierdu
1. 膝盖还好,其实你可以看距离我要保养膝盖的时候就会只跑 1km,一定要买双跑鞋
2. 我不太怕冷,跑起来就不冷了。相对来说,之前在沈阳,手机比我怕冷。
zouzou0208
    72
zouzou0208  
OP
   2020-10-10 15:12:00 +08:00
@bonfy 一双好鞋,跑前准备,跑后拉伸。
mosesyou
    73
mosesyou  
   2020-10-10 15:16:21 +08:00   1
看起来好棒啊
kermitlee
    74
kermitlee  
   2020-10-10 15:16:39 +08:00   1
不错的好项目! star 了,想去帮忙,等有空去去看看怎么搞(这么说来 keep 的数据挺安全?哈哈我一直用 keep,4 年了
mutu
    75
mutu  
   2020-10-10 15:17:37 +08:00   1
楼主的想法很不错,数据都掌握在不同的跑步 app 中,同步给手机的只是一个汇总数据(至少国内的 keep 是这样的),自己能完全掌握好自己数据的话还是蛮不错的
1. 自动同步 iOS 的健康数据,可能能实现,暂未调研
2. 目前在用 keep 记录(周边小伙伴们都在用),但是对 keep 挺失望的,出 bug (我的组队数据丢失)反馈了好几天,客服总说帮我催。计划也研究下 keep,看能不能想法把里面的数据倒出来
wupher
    76
wupher  
   2020-10-10 15:18:23 +08:00   1
COOOOL

已 star
zouzou0208
    77
zouzou0208  
OP
   2020-10-10 15:19:53 +08:00
@kermitlee 也可能是我没得到要领~哈哈。欢迎欢迎,入口你可以参考 github actions 里的 yml,是靠这个穿起来的。
zouzou0208
    78
zouzou0208  
OP
   2020-10-10 15:20:03 +08:00
@wupher 谢谢
AA5DE3F034ACCB9E
    79
AA5DE3F034ACCB9E  
   2020-10-10 15:25:19 +08:00   1
nice,希望早日支持悦跑圈,已 star
ghostsf
    80
ghostsf  
   2020-10-10 15:36:16 +08:00   1
地图上的轨迹是多个经纬坐标点绘制的吗?
wentian2
    81
wentian2  
   2020-10-10 15:40:56 +08:00   1
厉害了
ghostsf
    82
ghostsf  
   2020-10-10 15:42:13 +08:00   1
mapbox 收费吗? 可以本地私有部署 ?
sh1t0nu
    83
sh1t0nu  
   2020-10-10 15:48:19 +08:00   1
有意思!
urusai
    84
urusai  
   2020-10-10 15:53:27 +08:00   1
有点意思,star 了
zouzou0208
    85
zouzou0208  
OP
   2020-10-10 16:03:06 +08:00
@ghostsf 是的,用的 geojson 。
zouzou0208
    86
zouzou0208  
OP
   2020-10-10 16:03:37 +08:00
@ghostsf 我用的免费的,目前看起来够用。你也可以用自己的 token
    87
zouzou0208  
OP
   2020-10-10 16:04:39 +08:00
@mutu iOS 的数据不难,但是苹果的得手动导出不能自动化。每天自动 commit, 自动部署
leeyom
    88
leeyom  
   2020-10-10 16:21:13 +08:00   1
我去,楼主可以啊,我目前跑了两年到三年吧,跑量在 3000 多,平均每年 1000 公里的目标,今年也是惭愧,到目前为止,只跑了 600 多公里,楼主能不能支持 keep 呢,目前所有的数据都在 keep 上
zouzou0208
    89
zouzou0208  
OP
   2020-10-10 16:24:34 +08:00
@leeyom 谢谢
keep 不太确定~后续会看看。
wh1012023498
    90
wh1012023498  
   2020-10-10 16:30:18 +08:00   1
明人不说暗话,我只喜欢吃。。
guanhui07
    91
guanhui07  
   2020-10-10 16:56:31 +08:00   1
watana
    92
watana  
   2020-10-10 17:20:41 +08:00   1
楼主能分享下冬天跑步的着装吗?要保护膝盖的话,买双护膝的效果怎么样?
zhangyl
    93
zhangyl  
   2020-10-10 17:31:50 +08:00   1
很棒,我开发了针对跑团管理的小程序“跑跑糖”,已对接 Garmin 和郁金香,都有 api 。咕咚也有对外接口但是要收费,还挺贵。国内的 app 数据都不舍得外流,捂得很严实……
runking
    94
runking  
   2020-10-10 18:33:06 +08:00
提醒下,楼主可能漏隐私了
zouzou0208
    95
zouzou0208  
OP
   2020-10-10 18:47:35 +08:00
@runking hi~谢谢,能私信我下么?我没记得我传过隐私的东西~。感谢 https://twitter.com/yihong06181
zouzou0208
    96
zouzou0208  
OP
   2020-10-10 18:48:43 +08:00
@watana 我没带过护膝,冬天的话就是很普通的卫衣,开始冷,跑起来就好了。
outcastveron
    97
outcastveron  
   2020-10-10 19:45:31 +08:00   1
nike 已经荧光黄了,支持一下:)))
zouzou0208
    98
zouzou0208  
OP
   2020-10-10 20:01:03 +08:00 via iPhone
@outcastveron 太牛了,感觉我还得几年
ZnBDPang
    99
ZnBDPang  
   2020-10-10 20:19:52 +08:00
这也太强了
lsdk91
    100
lsdk91  
   2020-10-10 21:04:58 +08:00
@qping 自己跑啊
1  2  
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2559 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 32ms UTC 04:22 PVG 12:22 LAX 20:22 JFK 23:22
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86