我用 Python 写了一个“体能管理”脚本,提醒自己该去跑步了

这脚本的核心逻辑是:如果今天步数没达标,就自动从我的微信零钱里转 200 块钱给我老婆。不是开玩笑,真转。

2019 年到现在,身体状态断崖式下跌。以前通宵改原型,第二天灌两杯冰美式还能接着干。现在不行了,凌晨三点还在跟团队对下周的排期,心脏突突地跳,手有点发麻。上个月体检报告出来,脂肪肝、心律不齐、颈椎反弓,一堆标红的指标。医生就一句话:你再这么熬,挣的钱不够以后看病的。这话我听过无数次,但这次不一样,因为我真感觉到累了。不是心累,是物理上的累,喘不上气那种。团队十来个人,每天睁眼就是工资、房租、客户催交付,我成了公司最大的那个瓶颈,也是最大的风险点。身体垮了,整个摊子就散了。

所以得自救,而且得用我唯一擅长的方式——写代码来逼自己。思路很简单,把健康数据量化,跟钱挂钩。钱是我现在最敏感的东西。

第一步,抓数据。用的是小米手环,官方没提供好用的 API,只能走野路子。用 mitmproxy 抓了手机 App 的包,找到了步数和卡路里的接口。请求头里有个加密的 token,每次登录都会变。研究了一下,是用几个设备参数加上时间戳生成的,逆向工程搞了一下午,用 Python 的 hashlib 和 hmac 模拟出来了。这里有个坑,服务器对请求频率有限制,太快了会直接封 IP,得加随机延时,还得模拟真实 App 的请求序列,不能上来就怼步数接口。

数据拿到了,是 JSON 格式,里面 steps、calories 字段直接取。我设定的底线是:工作日 8000 步,周末 5000 步。或者卡路里消耗超过 400 大卡,二选一达标就行。

第二步,执行惩罚。这才是最肉疼的部分。用到了 itchat 这个库,模拟微信网页版登录。先给自己发条消息测试:“体能检测脚本已启动,今日步数:0”。然后就是转账。itchat 不能直接调支付接口,那是另一个层面的风控。我的方法是:用 selenium 自动化操作电脑版微信。脚本检测到未达标后,自动触发一段代码:打开电脑微信,找到老婆的聊天窗口(备注名是固定的),点击转账按钮,输入金额 200,模拟键盘输入支付密码(密码写死在代码里,当然用了点简单的混淆)。最后还得截个图,保存为“惩罚证据_日期.jpg”,发到我自己文件传输助手。

整个流程跑通那天晚上,我故意没去跑步。脚本在晚上 11:55 准时启动,我盯着屏幕,看着鼠标光标自己移动、点击、输入。当支付成功的绿色弹窗跳出来时,心里咯噔一下。不是心疼 200 块,是突然意识到,我对自己的控制力,已经弱到需要靠这种“自动扣款”的机械系统来维持了。

团队里那帮年轻人,还能蹦迪喝酒第二天照常上班。我不行了。35 岁,体力就是最真实的 KPI。这个粗糙的脚本,像一面镜子,照出我的狼狈:一个曾经以为能用代码改变世界的人,现在写代码只是为了提醒自己别忘了跑步。很讽刺,但有用。至少这周,我达标了四天。钱没转出去,但那种被代码监视、逼迫的感觉,比任何鸡汤都管用。

也许管理团队、管理项目的第一步,是能管理好自己这具已经开始报警的肉身。脚本还在迭代,下一步想接入语音,每天下午六点用冰冷的合成音提醒我:“Flovico,你今天的数据很危险,再不运动,200 块就没了。” 得对自己狠一点,在这个阶段,温柔等于慢性自杀。

© 版权声明
THE END
喜欢就支持一下吧
点赞82 分享