Time-Catcher 是一个 Windows 微信朋友圈导出工具,支持自动识别当前登录账号,并导出结构化数据(JSON/CSV)。
- 目标:导出本人朋友圈数据,便于个人归档、统计分析和二次处理。
- 默认行为:仅导出本人朋友圈。
- 可选行为:手动开启“包含非本人记录”。
- 自动识别当前登录账号(运行态识别,通常无需手填账号)
- 一键导出流程(解密 -> 导出 -> 字段提取)
- 自定义导出目录(CLI 的
--out-root或 GUI 选择目录) - 导出时间范围过滤(开始日期 / 结束日期)
- 输出
JSON+CSV - 提供源码版命令行和桌面 GUI(可打包 EXE)
code/:核心源码(解密、导出、解析、GUI)workspace/:运行产物(导出结果、报告、临时文件,默认不入库)build_exe.bat:EXE 打包脚本requirements.txt:依赖清单doc/:过程和设计文档
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt- Windows 微信已登录并保持在线
- 微信数据目录可访问(默认
D:\Cache\xwechat_files)
默认仅导出本人朋友圈:
python code\moments_export_logged_in.py --out-root workspace\auto_export按时间范围导出(示例:2026-01-01 到 2026-02-08,含边界日期):
python code\moments_export_logged_in.py --out-root workspace\auto_export --start-date 2026-01-01 --end-date 2026-02-08如果希望包含非本人可见记录:
python code\moments_export_logged_in.py --out-root workspace\auto_export --include-others导出后同时尝试下载图片并生成本地化 JSON:
python code\moments_export_logged_in.py --out-root workspace\auto_export --download-media --media-images-only如需包含视频链接下载(可能失败率更高):
python code\moments_export_logged_in.py --out-root workspace\auto_export --download-media- 最终 JSON:
workspace/auto_export/final/<account>/moments_extracted.json - 本地化 JSON(开启下载媒体时):
workspace/auto_export/final/<account>/moments_local.json - 媒体目录(开启下载媒体时):
workspace/auto_export/final/<account>/media/ - 媒体报告(开启下载媒体时):
workspace/auto_export/final/<account>/media_export_report.json - 最终 CSV:
workspace/auto_export/final/<account>/moments_extracted_summary.csv - 任务清单:
workspace/auto_export/reports/export_manifest_*.json
如果你在日志里看到大量如下报错:
[media] fail <url> -> HTTP Error 400: Bad Request
通常是微信 CDN 链接已过期,而不是命令写错。项目已内置 URL 变体与本地缓存回退,但以下情况仍会失败:
- 该链接已失效(服务端直接返回 400)
- 本机本地缓存中没有对应媒体文件
- 仅“滑动朋友圈列表”但未真正点开大图,导致缓存不完整
推荐按这个顺序操作:
- 保持微信在线,在微信里打开目标时间段朋友圈。
- 尽量点开大图(或视频)并停留 1-2 秒,让客户端落缓存。
- 立刻执行导出(建议先图片模式,减少无效请求):
python code\moments_export_logged_in.py --out-root workspace\auto_export --download-media --media-images-only --media-retries 0- 若数据量大,先缩小时间范围验证命中率:
python code\moments_export_logged_in.py --out-root workspace\auto_export --start-date 2026-02-01 --end-date 2026-02-11 --download-media --media-images-only --media-retries 0- 查看报告文件
media_export_report.json:attempted:尝试处理的媒体资源数localized:成功本地化到media/的资源数failed:失败数(常见为链接过期)failures:失败明细(最多前 1000 条)
经验判断:
localized很低且failed很高:通常表示“链接过期 + 本地未缓存”,这部分无法靠 URL 规则恢复。- 老朋友圈内容比近期内容更容易出现 400。
- 先导近期,再逐步扩大日期范围,通常成功率更高。
build_exe.bat生成文件:dist/WeChatMomentExporter.exe
- 双击
WeChatMomentExporter.exe - 检查“微信数据目录”(通常默认即可)
- 选择“导出输出目录”(支持自定义)
- 设置“开始日期 / 结束日期”(可留空)
- 选择是否“每次导出自动创建时间子目录”(默认开启)
- 选择是否“包含非本人记录”(默认关闭)
- 点击“开始导出”
- 导出完成后点击“打开输出目录”
- 微信数据目录不存在:弹窗提示
- 时间格式错误:弹窗提示(需
YYYY-MM-DD) - 导出失败:弹窗 + 日志区输出具体错误
- 导出进度:日志实时显示当前步骤
- 默认不会,默认只导出本人记录。
- 只有手动开启
--include-others或 GUI 对应选项才会包含非本人记录。
- 部分 URL 是微信 CDN 的临时鉴权链接,不保证长期可访问。
- 建议在导出后立刻使用
--download-media,尽早落盘可访问的图片。 - 若报告里大量出现
HTTP Error 400,通常表示链接已过期或不可直链访问。 - 详见上面的“媒体下载排障(重点:大量 HTTP 400)”。
- 先打开并登录微信,再重新执行导出。
- 导出期间尽量保持微信在线,不要退出微信。
- 仅用于导出和处理本人数据。
- 请在合法合规范围内使用本项目。