10 个版本
0.2.0 | 2024年2月13日 |
---|---|
0.1.9 | 2024年1月26日 |
#3 在 #activities
112 每月下载次数
65KB
1K SLoC
基本用法
use std::{env, path::Path};
use config::{Config, File, FileFormat};
use getopts::Matches;
fn main() {
let args: Vec<String> = env::args().collect();
// see https://github.com/poster515/Rust-Garmin/blob/main/garmin/src/main.rs for options building
let options = Options::new();
let matches: Matches = match options.parse(&args[1..]).unwrap();
let config = Config::builder().add_source(File::new(cwd.join("config").join("garmin_config.json").to_str().unwrap(), FileFormat::Json)).build().unwrap();
let mut download_manager = DownloadManager::new(config, Some(matches));
download_manager.login();
download_manager.download_all();
}
注意,配置文件中的 'download_data_today' 是一种通用的覆盖设置 - 它将只下载今天的所有数据。即使你在命令行上指定了日期覆盖,如果 download_today_data 设置为 true,则会被忽略。话虽如此,以下是一些 CLI 覆盖设置,其中 download_today_data 设置为 false
-u, --summary_date use YYY-MM-DD format
download date for summary data
-w, --weight_date use YYY-MM-DD format
download date for weight data
-s, --sleep_date use YYY-MM-DD format
download date for sleep data
-r, --resting_heart_date use YYY-MM-DD format
download date for resting heart rate data
-m, --monitor_date use YYY-MM-DD format
download date for monitoring data
-o, --hydration_date use YYY-MM-DD format
download date for hydration data
-a, --activity_date use YYY-MM-DD format
download date for activity data
通过从 getopts crate 中传递 Some(matches) 对象,您可以指定这些覆盖设置。请参阅 ../garmin/src/main.rs 以获取示例。
活动注意事项
有一个配置 'num_activities_to_download',它请求下载最后 N 个活动的摘要,包括开始时间和活动 ID。从这里,另一个 API 被调用以检索每个活动的详细摘要。
使用以下流程来了解活动详细信息实际上是如何保存的
- 如果 'download_today_data' 为 true,则只会保存今天午夜(使用本地时区)到明天午夜之间开始的活动。
- 如果 'save_regardless_of_date' 为 false,则只会保存活动开始日期午夜到次日午夜之间的活动。
- 否则,活动默认保存到文件中。
基于日期保存活动很困难,因为没有(据我所知)一个端点可以按日期搜索活动。您可以下载从 activity_start_date 开始的 N 个活动。一个选项是下载大量活动的摘要,这些活动的日期可以检查其正确性。另一个未来的选项可能是将活动摘要保存到 influx,然后直接暴露 garmin_client 以按 ID 保存活动,但这目前尚未实现。
每日使用(例如,cron 作业)
我建议选择一个合理的值(例如,10)来获取活动的信息,除非您认为您将在一天内保存的活动超过这个数量,否则您可能有些疯狂。以下是每天下载昨天数据的示例配置
- 'download_today_data': false
- 'save_regardless_of_date': false
- 启用您想要的统计信息
历史下载(例如,批量下载)
如果您想下载大量历史活动,请设置配置文件中的日期和适当的天数。比如说,您想下载 2023 年的 监控 数据(心率、呼吸率等)。请设置以下内容
- 'download_today_data': false
- 'monitor_start_date': '2023-01-01'
- 禁用所有统计信息,除了 'monitoring'
- 'num_days_from_start_date': 365
会话管理的一个已知限制是,您只能在每个会话令牌中请求一次活动摘要,如果通过不断请求新令牌滥用 Garmin 的 OAuth2.0 架构,Garmin 会在几个小时后将您锁定。这就是为什么添加了 'num_days_from_start_date' 配置的原因。如果您需要下载更多监控数据,很可能您需要首先删除 .garmin_session.json 文件。
依赖项
~17–31MB
~492K SLoC