与zotero联用整理文献条目
-
notion创建institution:Notion - 登录
-
复制template到自己的notion
-
下载并安装zotero的插件notero
-
在设置中链接到notion的page(刚才的template)
-
在zotero中右键将文献同步到notion
自动记账
1. 简介
基于 BSync,用于将微信和支付宝的账单流水自动同步到 SQLite 数据库、Notion 或飞书多维表格中进行分析。
核心工作流:手机 App 导出账单 -> 发送到指定中转邮箱 -> Python 脚本通过 POP3 读取邮件 -> 下载附件 -> 输入密码解压 -> 解析数据 -> 同步至目标平台。
当前状态:已修复所有已知阻碍性 bug,可稳定处理最新的微信 (.xlsx + AES加密) 和支付宝账单。
2. 环境准备
2.1 基础环境
-
Python 3.10+
-
Git (可选,用于拉取代码)
2.2 安装依赖
除了基础依赖外,为适配新版账单,额外增加了以下关键库:
zmail: 处理邮件接收。
pyyaml: 读取配置文件。
openpyxl: 用于读取微信最新的 .xlsx 格式账单。
pyzipper: 用于解压使用 AES-256 加密的账单压缩包(解决标准库提示密码错误的问题)。
3. 项目配置
3.1 目录结构初始化
在项目根目录下,必须手动创建以下文件夹结构,否则会导致运行时找不到路径错误:
1 | |
3.2 配置文件 (config/conf.yaml)
确保配置了正确的中转邮箱(需开启 POP3 服务)和目标平台信息(Notion/飞书)。
1 | |
4. 关键代码修正
为了适配最新的微信账单格式,我们对源代码进行了三次关键修正。如果你在新环境部署,务必应用这些修改。
| 文件 | 修改点 | 原因 |
|---|---|---|
Bmail.py |
更新正则表达式匹配 tenpay.wechatpay.cn 域名 | 微信更改了账单下载链接的域名,旧正则失效 |
Bmail.py |
在 get_email 中增加 start_time 过滤 (获取最近24小时邮件) | 防止程序错误地抓取并处理邮箱中已有的历史旧账单 |
BFile.py |
完全重写,引入 openpyxl 和 pyzipper | 适配微信从 .csv 改为 .xlsx 格式,以及采用了 Python 原生不支持的 AES 加密 |
BSync_main.py |
(可选) 注释掉飞书/Notion相关代码 | 如果只使用本地 SQLite 存储,需按需禁用云端同步代码以防报错 |
修正一:更新微信账单下载链接正则 (Bmail.py)
微信更改了账单下载域名的前缀,导致老版本无法识别下载链接。
-
文件:
Bmail.py(约第 88 行) -
修改前:
re.findall(r'https://download\.bill\.weixin\.qq\.com/[^"]*', content) -
修改后:
1
2# 适配新的 tenpay.wechatpay.cn 域名
url = re.findall(r'https://tenpay\.wechatpay\.cn/[^"]*', content)
修正二 & 三:支持 .xlsx 格式与 AES 解压 (BFile.py)
微信现默认导出 .xlsx 格式,且压缩包使用 AES-256 加密,Python 内置库无法处理。我们将整个 BFile.py 进行了重写以支持 openpyxl 和 pyzipper。
-
文件:
BFile.py -
操作:使用我们最终调试成功的完整代码替换原文件。(该版本同时支持
.csv和.xlsx,并使用pyzipper进行强力解压)。
5. 日常使用流程
4.1 准备
-
环境确认:确保安装了所有必要依赖 (pip install requests pyyaml zmail openpyxl pyzipper)。
-
目录检查:确认项目根目录下存在 bsync_save/temp 文件夹。
4.2 执行同步
-
导出账单:
- 在微信/支付宝 App 中选择 “用于个人对账” 导出。
- 接收邮箱必须填写配置文件 conf.yaml 中指定的那个中转邮箱。
-
清理旧信 (可选但推荐):
- 尽量确保中转邮箱收件箱中没有未处理的旧账单邮件,或信赖代码中的时间过滤功能。
-
运行程序:
- 修改 BSync_main.py 中的 bill_platform 为 “wechat” 或 “alipay”。
- 在终端运行 python BSync_main.py。
-
输入密码:
- 等待终端提示
按需输入密码:,输入微信/支付宝下发的 6 位解压密码。
- 等待终端提示
-
查看结果:
- 程序自动完成下载、解压、解析。
- 数据最终会存入 bsync_save/bills.db (SQLite) 或同步至你配置的 Notion/飞书。
6. 常见问题排查
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
FileNotFoundError: [Errno 2] ... '' |
临时目录不存在,或未找到邮件导致路径为空 | 1. 手动创建 bsync_save/temp/ 目录2. 确保账单是直接导出到中转邮箱,而非转发 |
IndexError: list index out of range (在 Bmail.py 中) |
未找到下载链接 | 检查 Bmail.py 中的正则表达式是否匹配当前邮件中的链接域名 |
RuntimeError: Bad password (确认密码正确时) |
不支持的加密方式 | 确保已安装 pyzipper 并使用了最新的 BFile.py 代码 |
KeyError: 'results' (Notion同步时) |
Notion机器人没权限 | 在 Notion 数据库页面右上角 -> Connect to -> 添加你的集成机器人 |