Skip to content

SparkChase/Time-Catcher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Time-Catcher (时光捕手)

Time-Catcher 是一个 Windows 微信朋友圈导出工具,支持自动识别当前登录账号,并导出结构化数据(JSON/CSV)。

项目定位

  • 目标:导出本人朋友圈数据,便于个人归档、统计分析和二次处理。
  • 默认行为:仅导出本人朋友圈。
  • 可选行为:手动开启“包含非本人记录”。

核心功能

  • 自动识别当前登录账号(运行态识别,通常无需手填账号)
  • 一键导出流程(解密 -> 导出 -> 字段提取)
  • 自定义导出目录(CLI 的 --out-root 或 GUI 选择目录)
  • 导出时间范围过滤(开始日期 / 结束日期)
  • 输出 JSON + CSV
  • 提供源码版命令行和桌面 GUI(可打包 EXE)

目录说明

  • code/:核心源码(解密、导出、解析、GUI)
  • workspace/:运行产物(导出结果、报告、临时文件,默认不入库)
  • build_exe.bat:EXE 打包脚本
  • requirements.txt:依赖清单
  • doc/:过程和设计文档

源码版使用

1) 环境准备

python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt

2) 前提条件

  • Windows 微信已登录并保持在线
  • 微信数据目录可访问(默认 D:\Cache\xwechat_files

3) 一键导出(命令行)

默认仅导出本人朋友圈:

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

4) 结果文件

  • 最终 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

媒体下载排障(重点:大量 HTTP 400)

如果你在日志里看到大量如下报错:

[media] fail <url> -> HTTP Error 400: Bad Request

通常是微信 CDN 链接已过期,而不是命令写错。项目已内置 URL 变体与本地缓存回退,但以下情况仍会失败:

  • 该链接已失效(服务端直接返回 400)
  • 本机本地缓存中没有对应媒体文件
  • 仅“滑动朋友圈列表”但未真正点开大图,导致缓存不完整

推荐按这个顺序操作:

  1. 保持微信在线,在微信里打开目标时间段朋友圈。
  2. 尽量点开大图(或视频)并停留 1-2 秒,让客户端落缓存。
  3. 立刻执行导出(建议先图片模式,减少无效请求):
python code\moments_export_logged_in.py --out-root workspace\auto_export --download-media --media-images-only --media-retries 0
  1. 若数据量大,先缩小时间范围验证命中率:
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
  1. 查看报告文件 media_export_report.json
    • attempted:尝试处理的媒体资源数
    • localized:成功本地化到 media/ 的资源数
    • failed:失败数(常见为链接过期)
    • failures:失败明细(最多前 1000 条)

经验判断:

  • localized 很低且 failed 很高:通常表示“链接过期 + 本地未缓存”,这部分无法靠 URL 规则恢复。
  • 老朋友圈内容比近期内容更容易出现 400。
  • 先导近期,再逐步扩大日期范围,通常成功率更高。

EXE 版使用(GUI)

1) 生成 EXE(开发者)

build_exe.bat

生成文件:dist/WeChatMomentExporter.exe

2) 用户操作步骤

  1. 双击 WeChatMomentExporter.exe
  2. 检查“微信数据目录”(通常默认即可)
  3. 选择“导出输出目录”(支持自定义)
  4. 设置“开始日期 / 结束日期”(可留空)
  5. 选择是否“每次导出自动创建时间子目录”(默认开启)
  6. 选择是否“包含非本人记录”(默认关闭)
  7. 点击“开始导出”
  8. 导出完成后点击“打开输出目录”

3) GUI 内置提示

  • 微信数据目录不存在:弹窗提示
  • 时间格式错误:弹窗提示(需 YYYY-MM-DD
  • 导出失败:弹窗 + 日志区输出具体错误
  • 导出进度:日志实时显示当前步骤

常见问题

Q1:导出会不会包含别人朋友圈?

  • 默认不会,默认只导出本人记录。
  • 只有手动开启 --include-others 或 GUI 对应选项才会包含非本人记录。

Q2:为什么有些图片链接在网页里打不开?

  • 部分 URL 是微信 CDN 的临时鉴权链接,不保证长期可访问。
  • 建议在导出后立刻使用 --download-media,尽早落盘可访问的图片。
  • 若报告里大量出现 HTTP Error 400,通常表示链接已过期或不可直链访问。
  • 详见上面的“媒体下载排障(重点:大量 HTTP 400)”。

Q3:报错“找不到 Weixin.exe”怎么办?

  • 先打开并登录微信,再重新执行导出。
  • 导出期间尽量保持微信在线,不要退出微信。

声明

  • 仅用于导出和处理本人数据。
  • 请在合法合规范围内使用本项目。

About

捕获流逝的时光。Time-Catcher 是一款功能强大的微信朋友圈导出工具。它能将您的所有朋友圈记录(Moments)以结构化的方式备份到本地,确保您的数字记忆永不丢失。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages