用于将心率数据从iOS Health传输到计算机的命令行工具。与一个配套的iOS快捷方式一起工作。
heartbridge的Python项目详细描述
Heartbridge:iOS心率数据导出
结合苹果手表,iOS健康应用程序包含丰富的心率读数。我总是发现这些读数在健康应用程序中有点难以使用,并且无法找到一种方法将它们轻松导出到我可以操作/可视化读数的格式(例如JSON或CSV文件)。在
幸运的是,使用Shortcuts应用程序,访问这些数据要容易得多。它结合了一个快捷方式和一个快速的HTTP端点,可以将心率数据从iOS设备传输到Mac或PC上,这对我来说是一个有趣的小实验,看看这两者如何协同工作。除了Python标准库中已经包含的内容之外,它没有依赖关系。在
Heartbridge是一个命令行程序,可以从快捷方式(通过HTTP)接收数据,自动将其导出到您选择的目录(CSV或JSON格式),并根据文件所覆盖的日期范围自动命名文件。导出的文件包含时间戳(“健康”中的“开始日期”)和心率(“健康”中的“值”)。在
注意:这是为在本地计算机上运行而设计的!它并不是为了部署到服务器或任何东西上,而且还没有准备好生产。仅在信任本地网络上的设备时运行。在
要求
你需要两样东西:
- 安装了Python(>;=3.6)的计算机
- 在同一网络上安装了Shortcuts的iPhone
第一次运行时,快捷方式将提示您访问您的健康数据(特别是心率数据)。在
入门
pip install heartbridge
- 然后,在命令行中运行
heartbridge
:
这将以CSV格式将所有导出的文件保存到当前工作目录中。您可以用--directory
和--type
参数覆盖这两项。如果我希望桌面上有JSON文件,我可以使用:
heartbridge --directory ~/Desktop --type json
您还可以通过向port
传递参数来更改heartbridge将侦听上的数据的端口(默认为8888)。要获得可以传递的参数的完整列表,请键入heartbridge --help
。在
- 记下脚本输出的端点URL,并确保在防火墙提示时允许脚本接受传入连接。在本例中,我的将是
http://matt-mac.local:8888
:
- 在
在你的iPhone上,download the shortcut to extract Health samples。它将询问您刚才提到的HTTP端点URL是什么。在
在 - 在
快跑!系统将提示您选择要覆盖的日期范围。指定的日期范围的结束日期不包括在返回的数据中。例如,要获取2020年5月2日的所有数据:
在
脚本将从快捷方式接收到的有关数据的信息输出到控制台:
- 停止侦听并继续运行新的数据。当您完成导出所需的所有数据时,请停止运行脚本(Ctrl-C)。享受探索你的心率数据吧!在
所有命令行选项:
--help
:打印帮助文本。在--directory
:设置导出文件的输出目录。默认为当前目录。将创建不存在的目录。在--type
:设置输出文件类型。可以是csv或json。默认为csv。在--port
:设置端口以侦听上的HTTP请求。默认为8888。在
注释
快捷方式数据格式
这对我来说不是小事,所以我想先写一点关于如何使用快捷方式来获取健康数据的文章。“查找所有样本”快捷方式使用“查找所有样本:
这将返回运行状况样本的结果集,包括读取的开始日期、值和d阅读的持续时间。我发现困难的是一次导出这组数据的多个属性——我只能将日期导出到一个数组(日期数组)中,而实际心率值却导出到一个数组(一个值数组)中。一旦将它们绑定到字典中,快捷方式生成的结果JSON如下所示:
{"hrDates":["2019-12-16 08:24:36","2019-12-16 08:26:39",...],"hrValues":["74","72",...]}
hrDates
和{
其中,Python脚本用于将这两个数组组合成一个元组列表。一旦在httppost请求中接收到上述JSON,脚本就会将其转换为[("2019-12-16 08:24:36", 74.0), ("2019-12-16 08:26:39", 72.0)]
。然后将其转换为CSV或JSON文件。在
- 项目
标签: