robiningelbrecht / strava-activities-template
dev-master
2024-09-24 06:46 UTC
Requires
- php: ^8.2
- ext-json: *
- doctrine/dbal: ^3.7
- doctrine/migrations: ^3.6
- doctrine/orm: ^2.16
- guzzlehttp/guzzle: ^7.0
- lcobucci/clock: ^2.2
- league/flysystem: ^3.0
- nesbot/carbon: ^2.67
- php-di/php-di: ^6.4
- php-di/slim-bridge: ^3.2
- ramsey/uuid: ^4.3
- slim/psr7: ^1.5
- slim/slim: ^4.11
- symfony/cache: ^7.0
- symfony/console: ^7.0
- symfony/finder: ^7.0
- thecodingmachine/safe: ^2.2
- twig/twig: ^3.4
- vlucas/phpdotenv: ^5.4
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.9
- phpstan/phpstan: ^1.8
- phpunit/phpunit: ^10.0
- spatie/phpunit-snapshot-assertions: ^5.0
This package is auto-updated.
Last update: 2024-09-24 06:46:54 UTC
README
Strava活动模板
此存储库包含生成您自己的Strava统计数据页面的模板代码。只需按照以下步骤操作。如果您在执行任何步骤时遇到任何问题,请随时提交问题。我将很乐意帮助您 💅。
🦄 示例
- Markdown版本:https://github.com/robiningelbrecht/strava-activities
- HTML版本:https://strava-statistics.robiningelbrecht.be/
🪄 您需要什么
- Strava API密钥
- GitHub账户
🛠️ 安装
- 确保您已使用GitHub账户登录
- 首先,显示一些❤️并给此存储库加星标
- 通过点击这里并填写所需字段,使用此模板创建一个新的存储库
- 转到您新创建的存储库的
操作机密和变量
页面(https://github.com/[YOUR-GITHUB-USERNAME]/[REPOSITORY-NAME]/settings/secrets/actions)。请保持此页面打开,您需要在此处添加几个机密 - 接下来,转到您的Strava API设置页面。复制
客户端ID
和客户端密钥
- 创建两个新的存储库机密
- 名称:STRAVA_CLIENT_ID,值:从Strava API设置页面复制的
客户端ID
- 名称:STRAVA_CLIENT_SECRET,值:从Strava API设置页面复制的
客户端密钥
- 名称:STRAVA_CLIENT_ID,值:从Strava API设置页面复制的
- 现在您需要获取一个
Strava API刷新令牌
。这可能是最困难的一步。- 转到https://developers.strava.com/docs/getting-started/#d-how-to-authenticate并滚动到"仅用于演示目的,以下是如何使用cURL重现上述图形的步骤:"
- 按照那里解释的11个步骤操作
- 确保在第2步中将
范围
设置为activity:read_all
,以确保您的刷新令牌可以访问所有活动 - 使用您获取的刷新令牌创建一个存储库机密:名称:STRAVA_REFRESH_TOKEN,值:您刚刚获取的
刷新令牌
- 您应该有这些存储库机密:
- 在此之后,您需要确保自动化的工作流程能够将更改推送到您的存储库。
- 转到https://github.com/[YOUR-GITHUB-USERNAME]/[REPOSITORY-NAME]/settings/actions
- 向下滚动到
工作流程权限
并确保读写权限
已勾选
- 您需要做的最后一件事是编辑工作流程文件
update-strava-activities.yml
、update-ftp.yml
和update-key-value-store.yml
-
导航到 https://github.com/[YOUR-GITHUB-USERNAME]/[REPOSITORY-NAME]/edit/master/.github/workflows
-
取消注释第4行和第5行,通过删除
#
字符 -
向下滚动到
name: Initialize GIT run: | git config --global user.name 'YOUR_GITHUB_USERNAME' git config --global user.email 'YOUR_GITHUB_USERNAME@users.noreply.github.com'
- 将
YOUR_GITHUB_USERNAME
替换为您自己的用户名 - 点击右上角的
提交更改
- 将
-
对其他两个文件也进行相同的操作
-
配置
在运行第一个活动导入之前,您需要
!!! 在运行另一个工作流程之前,请务必等待当前工作流程完成 !!!
- 设置您的生日。这是为了1)在没有功率数据的情况下准确计算您活动的强度,2)确定您的心率区域
- 导航到 https://github.com/[YOUR-GITHUB-USERNAME]/[REPOSITORY-NAME]/actions/workflows/update-key-value-store.yml
- 使用日期格式
YYYY-MM-DD
填写您的生日并运行工作流程
- (可选,但推荐) 配置您的 FTP(=功能阈值功率)历史记录。
- 导航到 https://github.com/[YOUR-GITHUB-USERNAME]/[REPOSITORY-NAME]/actions/workflows/update-ftp.yml
- 填写您设置的 FTP 和日期 (
YYYY-MM-DD
) 并运行工作流程 - 为每个设置的 FTP 都这样做
- (可选) Strava 不允许抓取您所有完成的挑战和奖杯(见 一些注意事项),但如果您想导入这些,有一个小窍门
- 导航到 https://www.strava.com/athletes/[YOUR_ATHLETE_ID]/trophy-case
- 打开页面的源代码并复制所有内容
- 然后导航到 https://github.com/[YOUR-GITHUB-USERNAME]/[REPOSITORY-NAME]/edit/master/files/strava-challenge-history.html
- 将您刚刚复制的源代码粘贴进去,并在右上角
提交更改
- 在下次运行
导入活动
工作流程时,所有您的挑战都将被导入
☁️ 托管 HTML 版本
还有带有更多功能的 HTML 版本可供选择。您可以在 https://vercel.com 上免费托管
- 创建账户并登录
- 确保您连接到您的 GitHub 账户 (https://vercel.com/account/login-connections)
- 创建一个新项目并引用您的仓库
- 对于
框架预设
设置,使用其他
- 请确保
根目录
设置为build/html
- 您可以取消勾选选项
在构建步骤中包含根目录外的源文件。
- 您应该可以开始了
🧐 一些需要考虑的事项
- 添加到模板的任何新功能或更新都将自动出现在您的存储库中 🪄
- 只有(虚拟)骑行被导入,其他运动对这些统计数据不相关
- 由于技术(Strava)限制,并非所有Strava挑战都可以导入。只有您公共资料上可见的挑战可以导入(请确保您的资料是公开的,否则这将无法工作)
- Strava统计数据将每天重新计算一次。如果您想手动重新计算这些数据,请转到https://github.com/[YOUR-GITHUB-USERNAME]/[REPOSITORY-NAME]/actions/workflows/update-strava-activities.yml并点击右侧的
运行工作流程
- 首次运行导入可能需要一些时间,具体取决于您在Strava上的活动数量。Strava的API每15分钟有100个请求的限制,每天有1000个请求的限制。我们必须确保不超过这个限制。请参阅https://developers.strava.com/docs/rate-limits/。如果您有超过500个活动,您可能会遇到每日请求限制。如果您遇到这种情况,应用程序将在第二天(或之后)导入剩余的活动。
- 如果您遇到以下错误
App\Infrastructure\Exception\EntityNotFound: KeyValue "athlete_birthday" not found
,这意味着您尚未设置您的生日。运行“更新运动员生日”工作流程
❌ 在更新FTP / KeyValue存储时遇到错误?
这是因为我在没有意识到的情况下引入了破坏性变更。是的,我知道很愚蠢。GitHub不允许您从模板自动更新工作流程文件,所以您必须手动这样做。
请将以下文件更新到您自己的存储库的最新版本
- https://github.com/robiningelbrecht/strava-activities-template/blob/master/.github/workflows/update-ftp.yml
- https://github.com/robiningelbrecht/strava-activities-template/blob/master/.github/workflows/update-key-value-store.yml
💡 功能请求?
对于任何反馈、帮助或功能请求,请新建一个问题
💻 本地开发
如果您想自己添加功能或修复错误,您可以在本地机器上设置项目。只需克隆此git存储库,然后您就可以开始了。
该项目可以在单个使用PHP的Docker
容器中运行。还有一个Make
文件来...简化操作
# Run a docker-compose command. make dc cmd="run" # Run "composer" command in the php-cli container. make dcr cmd="composer" # Run an app console command make console arg="app:some:command" # Run the test suite. make phpunit # Run PHPStan make phpstan
有关其他有用的Make
命令,请参阅Makefile
📓 变更日志
此项目的所有重大变更都将在此文件中记录。
[2023-01-17]
- 添加了每周统计数据图表中的骑行小时数
- 修复了首次运行时导入段落崩溃的bug(感谢dylix的反馈)
[2023-01-13]
- 添加了年度统计数据
[2023-01-05]
- 重构了活动和段落概览以使其更快
[2023-01-01]
- 添加了热图的第一版本
[2023-12-28]
- 在活动模态中显示段落
- 一些小的改进和bug修复
[2023-12-24]
- 修复了在非Zwift虚拟活动中渲染HTML时崩溃的bug。(感谢pdoteter)
[2023-12-23]
- 删除孤立的活动(感谢mdleye)
[2023-12-21]
- 将数据库拆分为多个数据库,每个数据库对应于有数据的一年。(感谢pdoteter使用大量数据集进行测试)
[2023-12-19]
- 渲染和显示段落和努力
[2023-12-18]
- 将DB大小减少了50%以上
- 导入和处理段落
[2023-12-03]
- 添加了挑战一致性表格(感谢 rubenbuysse)
[2023-12-01]
- 为活动添加了月历视图
- 修复了路由器中的错误
[2023-11-25]
- 将齿轮统计数据移至单独页面
[2023-11-18]
- 添加了功率和心率分布图
[2023-11-13]
- 使用模态更改活动抽屉
[2023-11-09]
- 将平均速度和距离添加到多个统计数据中
[2023-11-07]
- 允许导入挑战/奖杯历史记录
- 修复了双挑战导入问题
[2023-11-04]
- 改进了瀑布布局
- 在标签上显示照片数量
- 修复了工作流程数据库错误(感谢 mdleye)
[2023-11-02]
- 添加了“心率区域时间”图表
- 优化了现有图表
[2023-10-30]
- 渲染FTP历史图表
[2023-10-29]
- 显示FTP历史记录
- 更精确的活动强度计算
[2023-10-26]
- 更好的移动时间格式化
[2023-10-25]
- 为图表添加了更好的工具提示
[2023-10-25]
- 显示最长连续 streak
[2023-10-24]
- 在活动抽屉中添加了活动流图表
[2023-10-21]
- 将天气数据迁移到单独字段
[2023-10-20]
- 添加了距离分解表
- 添加了白天统计数据
- 月度统计数据:过滤掉没有活动的月份(感谢 mdleye)
- 在活动列表中添加排序
- 重构了周统计数据
[2023-10-19]
- 修复了部署新模板版本时的错误
[2023-10-15]
- 模板的初始稳定版本
[2023-10-12]
- 在导入大量Strava活动时修复了错误(感谢 rubenbuysse 进行测试)