V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zouzou0208
V2EX  ›  程序员

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

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

我跑步超过 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

168 条回复    2023-10-25 18:21:41 +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
    31
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   ❤️ 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 是相对好一些的选择。
Fooleap
    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
zouzou0208
    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   ·   实用小工具   ·   5427 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 47ms · UTC 03:50 · PVG 11:50 · LAX 19:50 · JFK 22:50
Developed with CodeLauncher
♥ Do have faith in what you're doing.