一到年底,各个平台都会推出年度报告,微信出于隐私考虑一直没有。2022 年 1 月,我和朋友李昊蕤自己做了一个:读手机里的微信数据库,为每一位好友统计这一年里我们的聊天,生成一份只属于两个人的年度报告,当作新年祝福发出去。

几屏的样子,用的是示例数据。
报告里有什么
- 我们从哪一天开始聊天,今年一共互发了多少条消息;
- 最长连续聊了多少天;
- 哪一天聊得最多,那天的关键词是什么;
- 今年最晚的一次聊天在几点;
- 一天里最常在几点聊、一周里哪天聊得最多;
- 我们俩的年度关键词;
- 最后是一句我手写给对方的祝福。
每份报告都要输入验证码才能打开,因为里面是两个人的聊天。
怎么做的
- 取数据:从手机导出微信的本地数据库,它是加密的,要用 SQLCipher 解开;
- 处理:用 Python 和 Pandas 按好友统计。聊天里有很多特殊的消息,比如引用回复、“拍一拍”,要先解析出来,这部分是我写的;
- 写祝福:给每位好友手动写一句话;
- 生成验证码,最后部署前端和后端。
前端是 React 做的一屏屏的页面,后端用 Flask。这个项目的原型,是李昊蕤一门信息可视化课程的作业,我们在它的基础上改成了能发给很多人的版本。
部署到 Azure
那时我刚当上微软学生大使,有 Azure 的额度,就把它部署到了 Azure 上。前端用 Azure Static Web Apps,后端用 Azure App Service,还用 Azure Functions 接了一个数据库,琢磨了很久才弄通。