picasticks/stravaclubtracker

Strava Clubs的进度跟踪仪表板生成器,显示俱乐部总成绩、顶尖努力、个人领袖和俱乐部详情

1.1.1 2021-01-18 20:27 UTC

This package is auto-updated.

Last update: 2024-09-19 04:19:24 UTC


README

banner

Strava Club Tracker

Strava俱乐部进度跟踪仪表板生成器,使用StravaPHP与Strava API交互并汇总俱乐部成员统计数据。生成包括俱乐部总成绩、个人领袖、俱乐部名单和个体活动详情的视图。

这是主摘要页的示例截图,以及俱乐部成员的活动详情页面。这里是Composer包

为什么?

作为一个慈善筹款活动,我所在的团体举办了一个为期一个月的运动挑战,组织了多个团队,并决定使用Strava Clubs来跟踪每个团队向团队里程目标迈进的情况。虽然Strava非常适合跟踪个人努力、分享照片等,俱乐部也是一个保持大家积极性、组织团队骑行和步行的好方法,但默认的俱乐部视图过于有限,不适合我们。例如,总成绩没有包括所有活动类型(排除徒步、步行等),我们希望对不同活动类型进行不同的计数(1公里的游泳比1公里的骑行要难得多!),并且希望将整个团体和所有俱乐部作为一个单独的仪表板一起查看。

主要功能

  • 跟踪一个或多个俱乐部
  • 按活动和跨活动显示俱乐部总成绩
  • 突出显示顶尖努力
  • 突出显示个人领袖
  • 俱乐部名单和个体活动详情,以便参与者可以一眼确认他们的活动已被包括在内
  • 生成HTML输出(可交换的模板回调)
  • 可配置规则
    • 配置距离单位(英里、公里、米等)
    • 为每个活动以不同的方式计数里程(例如,游泳2倍,骑行0.25倍)
    • 结合多种活动类型(例如,结合“步行”和“徒步”,或“骑行”和“虚拟骑行”)
    • 自定义活动标签
    • 对速度和持续时间进行数据质量/合理性检查,因为人们不可避免地会忘记停止Strava并坐进车或沙发上。将2英里“跑步”改为步行等。
  • 类方法以返回总计和结构化数据
  • CSV导出

快速开始

此库在/example中包含一个简单的示例实现。在Strava中,您至少需要设置一个俱乐部,包括俱乐部成员和已完成的活动(骑行、跑步等)。您需要Strava API凭证。

要启动示例

  1. example目录及其内容复制到新的项目目录中。

  2. 切换到lib目录,并使用Composer安装库及其依赖项

cd lib
composer install
  1. 编辑htdocs/example_update.php并设置Strava Club ID列表、起始和结束日期、Strava API凭证和https回调URI。最好先测试仅几天的时间段。

  2. 使用浏览器通过https加载 example_update.php 并点击链接。它将从Strava获取OAuth授权,并使用Strava API将俱乐部数据下载到 json 目录。

  3. 编辑 build.php 并进行任何您喜欢的更改。默认情况下,此脚本使用英里作为距离单位,并包括骑行、跑步、步行和远足活动。

  4. 从CLI运行 build.php 以将HTML文件生成到 htdocs/

php build.php

不言而喻,此示例应用程序不是生产质量,也不包括访问或授权控制,它仅供演示使用!它分为两部分,这样您就可以离线编辑和重新运行 build.php 多次,以玩转生成功能和语法。

Strava权限和俱乐部/个人/活动可见性

Strava根据其安全和隐私政策管理俱乐部详细信息、成员和活动的可见性。为了使俱乐部成员被包括在内,并计算他们的活动,每位成员必须使其活动对您的应用程序用户可见。例如,成员可以将活动对所有人可见(目前,Strava的默认设置),或仅对关注者可见,然后接受您的用户作为关注者。

如果俱乐部成员的活动未显示,他们应该检查Strava中的可见性设置,并确保他们已将这些活动对运行您的应用程序的俱乐部成员用户可见。

法律

此软件库受版权保护,并根据GNU GPL条款提供。有关详细信息,请参阅 LICENSE

此库旨在由遵守 Strava服务条款 和其他条款的应用程序使用,包括其隐私政策和API协议。值得注意的是,Strava的 API协议 规定,API不应用于启用虚拟比赛或竞赛,或复制Strava网站、服务或产品。如果您打算将此库用于未经许可的使用,请勿这样做。

类文档

picasticks\Strava

picasticks\Strava\Club

方法

Club::__construct

描述

public __construct (string $storageDir)

构造函数

参数

  • (string) $storageDir : 下载JSON文件的文件系统目录

返回值

void

Club::downloadClub

描述

public downloadClub (int $clubId)

从Strava下载俱乐部详细信息

参数

  • (int) $clubId : 俱乐部ID

返回值

void

Club::downloadClubActivities

描述

public downloadClubActivities (int $clubId, int $start, int $end)

从Strava下载俱乐部活动数据

参数

  • (int) $clubId : 俱乐部ID
  • (int) $start : 开始日期(UNIX时间戳)
  • (int) $end : 结束日期(UNIX时间戳)

返回值

void

Club::getClubFilenames

描述

public getClubFilenames (void)

获取俱乐部数据文件数组

参数

此函数没有参数。

返回值

数组

文件名

Club::getDataFilenames

描述

public getDataFilenames (int $clubId)

获取俱乐部活动数据文件和时间戳映射

参数

  • (int) $clubId : 俱乐部ID

返回值

数组

array('filename' => timestamp)

Club::getRequestCount

描述

public getRequestCount (void)

获取当前对Strava的API请求数量

参数

此函数没有参数。

返回值

int

请求计数

Club::log

描述

public log (string $msg, int|null $error_type)

使用 $this-logger 记录消息

参数

  • (string) $msg : 消息
  • (int|null) $error_type : (可选)PHP错误类型

返回值

void

Club::setClient

描述

public setClient (Client $client)

设置Strava API客户端实例

参数

  • (Client) $client : 实例

返回值

void

picasticks\Strava\ClubTracker

方法

ClubTracker::__construct

描述

public __construct (Club $data)

构造函数

参数

  • (Club) $data : 俱乐部实例对象

返回值

void

ClubTracker::getCSV

描述

public getCSV (void)

以CSV格式返回所有活动数据

包含标题行

参数

此函数没有参数。

返回值

string

CSV格式数据导出

ClubTracker::getClubHTML

描述

public getClubHTML (int $clubId)

返回俱乐部名单和总览的HTML

应用模板名称 'club'

参数

  • (int) $clubId : 俱乐部ID

返回值

string

HTML

ClubTracker::getClubs

描述

public getClubs (void)

返回俱乐部数组和俱乐部属性

参数

此函数没有参数。

返回值

数组

of (int) clubId => (array) club attributes

ClubTracker::getPersonHTML

描述

public getPersonHTML (int $clubId, string $person)

返回单个运动员的活动日志HTML

应用模板名称 'person'

参数

  • (int) $clubId : 俱乐部ID
  • (string) $person : 人员名称

返回值

string

HTML

ClubTracker::getPersonHTMLFilename

描述

public getPersonHTMLFilename (string $baseDir, int $clubId, string $person)

获取显示个人活动详情的HTML页面的文件系统路径

参数

  • (string) $baseDir : 文件系统基本目录
  • (int) $clubId : 俱乐部ID
  • (string) $person : 人员名称

返回值

string

文件名

ClubTracker::getResults

描述

public getResults (void)

返回按俱乐部和运动员分组的活动数据的分层数据结构

参数

此函数没有参数。

返回值

数组

活动数据

ClubTracker::getSportLeaders

描述

public getSportLeaders (string $sport)

获取某个运动/活动类型的领导排名列表

参数

  • (string) $sport : 运动ID

返回值

数组

包括:总距离,俱乐部ID,人员名称

ClubTracker::getSportLeadersHTML

描述

public getSportLeadersHTML (string $sport, int $limit)

返回某个运动的领导者的HTML表格

应用模板名称 'leaders'

参数

  • (string) $sport : 运动ID
  • (int) $limit : (可选) 包含的运动员数量(默认为前5名)

返回值

string

HTML

ClubTracker::getSummaryHTML

描述

public getSummaryHTML (void)

返回主要HTML摘要表格

包括排名,顶级个人表现,俱乐部总计

应用模板名称 'index'

参数

此函数没有参数。

返回值

string

HTML

ClubTracker::getTopActivities

描述

public getTopActivities (int $clubId, string $person, string $sport)

获取顶级活动排名列表

可选按俱乐部、人员和运动筛选

参数

  • (int) $clubId : (可选) 俱乐部ID
  • (string) $person : (可选) 人员名称
  • (string) $sport : (可选) 运动ID

返回值

数组

活动数据:总计,距离,俱乐部ID,人员名称,日期,活动名称,运动

ClubTracker::getTopActivitiesHTML

描述

public getTopActivitiesHTML (string $sport, int $limit)

返回某个运动/活动类型的顶级表现的HTML表格

应用模板名称 'activities'

参数

  • (string) $sport : 运动ID
  • (int) $limit : (可选) 包含的运动员数量(默认为前5名)

返回值

string

HTML

ClubTracker::getTotal

描述

public getTotal (string $type, int $clubId, string $person, string $sport)

获取总距离,总距离或移动时间

可选按俱乐部、人员和运动筛选

参数

  • (string) $type : 'distance' 'total' 或 'moving_time'
  • (int) $clubId : (可选) 俱乐部ID
  • (string) $person : (可选) 人员名称
  • (string) $sport : (可选) 运动ID

返回值

混合类型

(float) 距离或总距离,(int) 移动时间

ClubTracker::getTotals

描述

public getTotals (int $clubId, string $person, string $sport)

获取总距离,总距离和移动时间

可选按俱乐部、人员和运动筛选

参数

  • (int) $clubId : (可选) 俱乐部ID
  • (string) $person : (可选) 人员名称
  • (string) $sport : (可选) 运动ID

返回值

数组

包括:距离,总距离,移动时间总计

ClubTracker::loadActivityData

描述

public loadActivityData (void)

从磁盘加载活动数据(下载的JSON响应)

计算总计并将所有活动按俱乐部和运动员分组的分层数据结构存储

使用活动日期设置 $this->start 和 $this->end

参数

此函数没有参数。

返回值

void

ClubTracker::setSport

描述

public setSport (string $sportId, array $attributes)

添加或设置一个运动,包括标签和总计规则

属性可能包括

string $label (可选) 用于格式化输出中运动名称的字符串(如果未设置,则使用 $sportId)。

string $convertTo (可选) 将此运动ID的活动转换为另一个运动ID的运动ID。用于将多个Strava运动合并在一起以简化报告,例如将“步行”和“徒步旅行”合并。

float $distanceMultiplier (可选) 应用到距离以计算调整后总距离的乘数。例如,将“骑行”设置为0.25和“步行”设置为1意味着每英里步行与4英里骑行的计数相同。

float $maxSpeed (可选) 单个运动中某个运动的最高速度,以每小时距离单位表示。超过此限制的活动将被计为0(用户应在Strava中编辑它们,并设置正确的活动类型或编辑活动以删除车辆行驶的距离)。

float $distanceLimit (可选) 单个运动中某个运动的硬距离限制。超过此限制的活动将计到距离限制。

参数

  • (string) $sportId : 运动ID
  • (array) $attributes : (可选)

返回值

void

ClubTracker::setTemplateFunction

描述

public setTemplateFunction (callable $function)

设置模板函数

参数

  • (callable) $function : 应用于模板变量的可调用的函数

返回值

void

ClubTracker::whitelistActivity

描述

public whitelistActivity (string $id)

将活动添加到活动白名单

白名单中的活动总是计数,绕过合理性检查

参数

  • (string) $id : 活动ID

返回值

void