Files
zWorkFlow/EXE_USAGE.md
phoenixray2000 5e0eaa33fa feat(export): 增加微信聊天增量 JSON 导出 (#122)
新增 export_all_chats --delta-only 按时间窗口导出每个会话的增量 JSON.

- --delta-only 写入 deltas/<run_id>/manifest.json + 有消息的会话文件, 便于后续按批次消费
- 沿用现有 CSV plan 选择逻辑, 可通过 --from-plan-csv 控制范围
- 空时间窗口会话直接跳过, 不再生成 message_count=0 的 delta 文件
- 增量 JSON 保留会话级 metadata, 不改变现有 CSV 导出默认流程
- manifest.json 只记录实际有消息的会话, 无法解析的留在 errors 中便于定位

测试: tests/test_export_all_chats_delta.py 7 个 case (run_id 时间戳形状 / 文件名安全化 / msg_uid 哈希组成 / 写窗口不覆盖全量 JSON / 空窗口跳过 / CLI 参数校验 / manifest 记录文件).

跟 #114 (CSV plan) 互补 — CSV plan 选 "哪些会话" 而 delta 选 "哪个时间窗口".
2026-05-29 13:18:53 +08:00

132 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# WeChatDecrypt 使用说明 (Web UI + CLI 双模式)
## 快速开始
1. **启动微信** (个人微信 / 企业微信, 哪个想解密就启动哪个)
2. **双击 `WeChatDecrypt.exe`**
3. 浏览器**自动打开** `http://localhost:5678` (没自动开就手动复制粘贴)
4. 右上角点 **🛠️ 工具** 展开工具箱, 按 tab 切到你要的板块
## CLI 用法
同一个 `WeChatDecrypt.exe` 带参数运行时会作为命令行入口:
```powershell
.\WeChatDecrypt.exe --help
.\WeChatDecrypt.exe status
.\WeChatDecrypt.exe decrypt
.\WeChatDecrypt.exe export --from-plan-csv export_plan.csv
.\WeChatDecrypt.exe export-all output_dir --delta-only --start "2026-05-26 00:00:00" --end "2026-05-26 08:00:00"
.\WeChatDecrypt.exe export-all --write-plan-csv export_plan.csv
```
`--delta-only` 只写入时间窗口内的 delta JSON不读取或覆盖已有完整 JSON。
输出里每条消息包含 `msg_uid`,下游可以用它做去重;时间窗口内没有消息的会话会跳过,
不生成空的 `*.delta.json` 文件。
无参数或 `web` 子命令仍启动 Web UI:
```powershell
.\WeChatDecrypt.exe
.\WeChatDecrypt.exe web
```
## 工具箱 3 个 tab
### 📱 个人微信
| 步骤 | 操作 |
|---|---|
| Step 1 — 解密 | ① 提取密钥 + 解密数据库 / ② 提取图片密钥 |
| Step 2 — 导出/解码 | ③ 导出聊天 (弹模态框选会话+格式) / ④ 批量解密图片 / ⑤ 朋友圈解密+导出 |
**前置**: 微信 PC 版正在运行且已登录
### 🏢 企业微信
| 步骤 | 操作 |
|---|---|
| Step 1 — 解密 | ① 提取密钥 + 解密数据库 |
| Step 2 — 导出 | ② 导出聊天 (弹模态框选会话+CSV/HTML/JSON) |
**前置**: 企业微信 PC 版正在运行且已登录 (独立于个人微信)
### 🔧 工具
跟微信/企微进程无关, 只读已解密产物:
- 语音转 MP3 (需 [ffmpeg](https://ffmpeg.org/) 在 PATH)
## 实时消息监听
- 工具箱下方就是消息流, 按时间降序排列 (最新在顶)
- SSE 推送, 毫秒级延迟
- 图片自动解密预览, 表情/链接/转账等富媒体内联渲染
- 右上角 **⚙️** 配置消息通知规则 (按群名/发送人匹配, 桌面通知 + 声音)
## 导出筛选 (重要)
点 ③ 导出聊天 / ② 企微导出 后, **会弹模态框**:
- 🔍 搜索框按会话名/wxid 过滤
- 复选框选要导的会话 (3142 个个人微信会话 / 14 个企微会话按时间降序)
- 一键 [全选] / [清空] / [选最近 30 天活跃]
- 选格式 (CSV / HTML / JSON, 企微支持; 个人微信目前只输出 JSON)
- 点 [确认导出 →] 才真正跑
**不会再"一点就跑全量"**
## 任务终止
任何任务跑起来后, 触发的按钮会变成红色 **🛑 终止**。再点一下立刻 SIGTERM/kill 子进程。
## 前置要求
- Windows 10 / 11
- 微信 / 企业微信 PC 版已登录 (跑解密前需要进程在运行)
- [FFmpeg](https://ffmpeg.org/download.html) 已安装并加入 PATH (仅"语音转 MP3"需要)
## 输出目录
在 exe 所在目录下生成:
```
WeChatDecrypt.exe
config.json ← 首次运行自动生成
decrypted/ ← 个人微信解密后的 SQLite 数据库
wxwork_decrypted/ ← 企业微信解密后的 SQLite 数据库
wxwork_keys.json ← 企微 keys (含明文 raw key, 已 chmod 0600)
all_keys.json ← 个人微信 keys (同上)
wechat_files/<wxid>/ ← 导出的聊天记录 (按 wxid + 联系人分子目录)
张三/
messages.csv ← (用 export_messages.py 时)
messages.html
messages.json
朋友圈图片/ ← 朋友圈缓存图片解密后
data/ ← 语音转 MP3 输出 (有的话)
exported_chats/ ← 用 ③ 导出全部聊天 (JSON) 时的输出 (export_all_chats.py)
deltas/<run_id>/ ← --delta-only 输出 manifest.json + 非空 chats/*.delta.json
wxwork_export/ ← 企微聊天导出
```
## 远程访问 / 多设备
monitor_web 默认 bind `0.0.0.0`, 同局域网其他设备可以访问
`http://<你的本机 IP>:5678`。如需要只允许本机访问, 修改源码 `PORT` 那一行附近的 bind 地址改成 `127.0.0.1`
## 还有个 tkinter 桌面 GUI (备用, 共存)
如果你 **不想开浏览器** (公司机器禁浏览器 / 全离线场景), 可以用桌面 GUI:
```bash
python app_gui.py # → 弹 tkinter 窗口
```
跟 Web UI 功能基本对齐 (8 个按钮 / 导出对话框), 缺点:
- 中文字体下渲染较糊
- Windows-only (不跨平台)
- 没法远程访问
单 exe **默认入口是 Web UI + CLI 分发器**。要打 tkinter 版的 exe, 改
`WeChatDecrypt.spec``Analysis(['wechat_decrypt_launcher.py'])`
`Analysis(['app_gui.py'])``build.bat`