你是否因为一笔一笔记账太繁琐,无法坚持下去(doge
你是否因为支付宝和微信账单分开统计感到厌烦(doge
此前已经有人尝试过使用 Notion API 进行记账,但手动下载解压再导入实在不够优雅。 该项目基于 Notion API + Python 实现支付宝与微信账单聚合,使用 zmail 模块以邮件的方式实现更优雅的记账
实现原理是通过解析微信与支付宝提供的账单压缩包中的 .csv 文件,使用 Notion API 向 Table 中添加记录,实现记账的功能
- 注册 Notion 账号并开通一个集成(integration)以使用 Notion API,获取 API 的密钥,后面需要使用,可以参考其他大佬的图文 (Notion API 探索笔记(一) - 知乎 (zhihu.com))
- python 3.8+ 的环境
- 两个邮箱:一个用于接收账单信息与通知,作为服务端,需要开通 POP 功能;一个用于发送解压密码与接收消息通知,作为客户端
可选使用模板导入或手动创建
- 使用已上线的模板 (聚合记账) 导入
- 在该模板中的内嵌数据库中点击查看数据库
- 右上角的菜单中选择拷贝链接,在该网址中找到页面的 id,url 形如 notion.so/你的id?v=xxx,将 id 的部分记下
- 创建一个 page
- 在 page 中创建一个 table
- 在网页中打开你刚刚创建的包含 table 的页面,在网址中找到那个页面的 id,url 形如 notion.so/你的id?v=xxx,将 id 的部分记下
- 编辑你的数据库,设置以下属性
- 日期 类型:date
- 星期 类型:select (周一, 周二, 周三, 周四, 周五, 周六, 周日)
- 账单信息 类型: title(就是它)
- 金额 类型:number
- 交易平台 类型:select (微信, 支付宝)
- 支付类型 类型:select (收入, 支出)
- 交易方式 类型:text
- 平台交易号 类型:text
- email.server 中填写服务端的邮箱地址与密码。注:密码一般使用的是 POP 授权码
- email.user_address 中填写客户端的邮箱地址
- notion.token 中填写 Notion API 的密钥
- notion.type 中填写父页面类型,这里作为数据库使用,填写 database_id
- notion.database_id 中填写你的数据库 id
将 conf.yaml 的 test_server 属性设置为 True
运行 main.py,查看终端输出。若显示通过,则说明服务端的邮箱连接正常
将 conf.yaml 的 test_server 属性设置为 False
运行 main.py,程序将会监听服务端邮箱是否收到支付宝或微信的账单邮件,收到后将会解析并向你的客户邮箱发送解压密码请求邮件,请直接对那封邮件回复6位数密码,同步完成后将会返回告知邮件