{"id":47300577,"url":"https://github.com/QQBackup/QQ-History-Backup","last_synced_at":"2026-03-31T06:00:50.440Z","repository":{"id":50365416,"uuid":"518867119","full_name":"QQBackup/QQ-History-Backup","owner":"QQBackup","description":"【停更】QQ/TIM 聊天记录导出为 HTML，支持图片、语音，可 GUI 与 非 GUI 操作 (Python)","archived":false,"fork":false,"pushed_at":"2024-04-13T02:51:09.000Z","size":8704,"stargazers_count":330,"open_issues_count":2,"forks_count":15,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-01-06T02:00:47.143Z","etag":null,"topics":["android","backup","qq"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/QQBackup.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2022-07-28T13:55:19.000Z","updated_at":"2025-01-05T00:11:00.000Z","dependencies_parsed_at":"2024-04-13T03:45:12.478Z","dependency_job_id":null,"html_url":"https://github.com/QQBackup/QQ-History-Backup","commit_stats":null,"previous_names":["qqbackup/qq-history-backup"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/QQBackup/QQ-History-Backup","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QQBackup%2FQQ-History-Backup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QQBackup%2FQQ-History-Backup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QQBackup%2FQQ-History-Backup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QQBackup%2FQQ-History-Backup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/QQBackup","download_url":"https://codeload.github.com/QQBackup/QQ-History-Backup/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QQBackup%2FQQ-History-Backup/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31223291,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-31T04:08:55.938Z","status":"ssl_error","status_checked_at":"2026-03-31T04:08:47.883Z","response_time":111,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","backup","qq"],"created_at":"2026-03-17T01:38:19.986Z","updated_at":"2026-03-31T06:00:50.433Z","avatar_url":"https://github.com/QQBackup.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# QQ聊天记录导出\n\n本项目用于将 **非 QQNT** 的 Android 端 QQ/TIM 的聊天记录数据库转换为 HTML 文件，并转换图片、语音等部分特殊消息。 \n\n## 关于其他平台（Windows, MacOS, iOS…）\n\n请看 [QQBackup/qq-win-db-key](https://github.com/QQBackup/qq-win-db-key)。\n\n## 维护情况\n\n省流：没时间维护，欢迎新 maintainer 与 PR（或者可以自行开个fork）。请提交到`dev`分支。\n\n同时，请参看[qq-win-db-key 中列出的改进版](https://github.com/QQBackup/qq-win-db-key/blob/master/%E6%95%99%E7%A8%8B%20-%20%E5%AE%89%E5%8D%93%E7%89%88QQ%E5%8F%8ATIM.md#%E8%A7%A3%E5%AF%86%E8%BD%AC%E6%8D%A2)。\n\n## 运行方式\n\n1. 一切操作之前，你需要先安装 Python 3.x（建议使用可下载的最高版本，已知支持`3.12`），可参考[此文章（Windows）](https://zhuanlan.zhihu.com/p/458428159)。\n2. 然后，在当前目录打开终端，Windows 用户若不懂可以看[这篇博文](https://blog.csdn.net/Lzy410992/article/details/105937780)\n3. 输入以下命令永久加速相关依赖的下载（换源）：`pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple`\n3. 安装依赖：`pip install -r requirements.txt`\n4. 若是运行 GUI，就`python GUI.py`\n5. 若是直接运行命令行版，就修改好`QQ_History.py`最下面的内容，并运行：`python QQ_History.py`\n\n## 声明\n\n本项目仅供学习交流使用，严禁用于任何违反中国大陆法律法规、您所在地区法律法规、[QQ软件许可及服务协议](https://rule.tencent.com/rule/preview/46a15f24-e42c-4cb6-a308-2347139b1201)的行为，本人不承担任何相关行为导致的直接或间接责任。\n\n本项目理论仅能将可以通过正常方法查看的聊天记录**导出**，而不能进行包括但不限于已删除聊天记录恢复在内的操作。\n\n本项目不对生成内容的完整性、准确性作任何担保，因此生成的一切内容**没有法律效力**，您不应当将其用于学习与交流外的任何用途。\n\n## 简介\n\n作为国内最常用的聊天工具之一，QQ 为了用户留存度，默认聊天记录备份无法脱离 QQ 被独立打开。\n\n目前版本往往需要通过命令行运行，本方法在之前版本的基础上简化了操作，制作了GUI方便使用；并且不再需要提供密钥，自动填入备注/昵称，添加了QQ表情、图片和语音的一并导出。\n\n如果你不使用打包后的版本，请首先运行以下命令以安装依赖：`pip install -r requirements.txt`\n\n## 获取聊天记录文件夹方法\n\n\u003e 注：以下提到的“电脑”泛指一切可以运行此程序的环境，如安卓手机上的 Termux 也属于此列\n\n\u003e 注：以下内容假设您使用的是 QQ 而非 TIM，如果您在使用 TIM，请将`com.tencent.mobileqq`改为`com.tencent.tim`，将`MobileQQ`改为`Tim`\n\n如果手机已获得 root 权限，聊天记录可在以下路径找到。\n\n```\n/data/data/com.tencent.mobileqq/\n```\n\n我们需要的文件只有`databases/\u003cQQ号\u003e.db`，`databases/slowtable_\u003cQQ号\u003e.db`，`files/kc`，因此您可以将整个文件夹压缩后传输到电脑上，亦或将这三个文件单独放在同一个目录中传输。本程序会自动识别这两种不同的目录结构。\n\n如果没有 root 权限，可以通过手机自带的备份工具备份整个 QQ，拷贝备份文件到电脑，解压找到 `com.tencent.mobileqq`。\n\n具体方法可以参见\n\n\u003e 怎样导出手机中的QQ聊天记录？ - 益新软件的回答 - 知乎\n\u003e \u003chttps://www.zhihu.com/question/28574047/answer/964813560\u003e\n\n关于苹果设备导出，参见[此讨论](https://github.com/Yiyiyimu/QQ-History-Backup/issues/42)；对于安卓系统导出内容的提取，请自行在互联网查询。\n\n如果同时需要在聊天记录中显示图片，拷贝手机中 `/sdcard/Android/data/com.tencent.mobileqq/Tencent/MobileQQ/chatpic/chatimg` 至 `GUI.exe` 同一文件夹中或者拷贝过来的`com.tencent.mobileqq`目录下。\n\n（QQ）如果同时需要在聊天记录中显示语音，拷贝手机中 `/sdcard/Android/data/com.tencent.mobileqq/Tencent/MobileQQ/\u003cQQ号\u003e/ptt` 至 `GUI.exe` 同一文件夹中或者拷贝过来的`com.tencent.mobileqq`目录下。\n\n（TIM）如果同时需要在聊天记录中显示语音，拷贝手机中 `/sdcard/Android/data/com.tencent.tim/Tencent/Tim/ptt/\u003cQQ号\u003e` 至 `GUI.exe` 同一文件夹中或者拷贝过来的`com.tencent.mobileqq`目录下，并重命名为`ptt`。\n\n## GUI使用方法\n\n![GUI_image](./img/GUI.png)\n\n- `com.tencent.mobileqq`：选择导出的相应文件夹，对于备份方式，一般为`apps/com.tencent.mobileqq`\n- 表情版本：默认为新版QQ表情。如果你的聊天记录来自很早以前，可以切换为旧版的表情\n- 导出所有记录：若此项选择“是”，则`QQ号/群号：`与`私聊/群聊：`选项会被忽略。\n- 导出图片：若此项与前一项均选择“是”，必须把`chatimg`目录复制到生成的`output_xxx`目录下，图片才能正常显示\n- 合并图片：默认为否\n  - 不启用合并图片好处在于：1. 使导出的 HTML 文件具有可读性；2. 减小 HTML 文件体积方便打开\n  - 启用合并图片好处：拷贝时不需要和 `emoticon` 以及 `chatimg` 文件夹一起拷贝，更加方便\n\n## 输出截图\n\n![screenshot](./img/layout.png)\n![screenshot](./img/images.png)\n\n如果没有启用合并图片，拷贝生成的聊天记录时需要一起拷贝 `emoticon` 以及 `chatimg` 文件夹.\n\n有 bug 的话提 issue，记得附上 log.txt 里的内容以及终端的报错内容。\n\n## TODO\n\n- [x] 支持群聊导出\n- [x] 支持自动查找密钥\n- [x] 使用好友/群聊昵称作为默认用户名\n- [x] 自动合并 db 和 slow-table\n- [x] 支持新 QQ emoji\n- [x] 支持单一文件导出\n- [x] 支持音频导出\n- [ ] 支持视频导出\n- [ ] 支持合并转发消息导出\n- [ ] 支持戳一戳导出\n- [ ] 支持缩略图\n- [ ] 支持卡片分享\n- [ ] 重构代码\n- [ ] 加入 i18n 与自定义翻译支持\n- [ ] 支持使用[silk-v3-decoder](https://github.com/ZhangJun2017/QQChatHistoryExporter)转换音频文件\n- [ ] 使用 Jinja2 生成 HTML 文件\n- [ ] 允许插入自定义 CSS 与 自定义 JS\n- [ ] 分析并试图优化解密相关函数\n- [ ] 更新预览图\n- [ ] 基于 GitHub Actions 以 PyInstaller 生成在 Windows 下的可执行文件\n\n\n\n## FAQ\n\n- **聊天记录中显示 `[图片]` 是因为什么？**\n\n   解码出的图片路径在 `chatimg` 找不到相应文件。可能原因为在手机中没有加载过该文件，导致图片没有存在手机里。\n\n## CHANGELOG\n\n### v2\n\n- 直接从 `files/kc` 提取明文的密钥，不用再手动输入或解密\n- 支持群聊记录导出\n- 支持 私聊/群聊 的 备注/昵称 自动填入\n- 支持 slowtable 的直接整合\n- 支持新版 QQ 表情\n\n### v2.2\n\n- 支持导出图片至聊天记录\n- 支持合并图片至单一文件方便传输\n\n### v2.3\n\n- 支持读取不同的目录结构\n- 支持单独导出一个私聊对话或群聊对话\n- 部分修复解密函数存在的 bug\n- 支持批量导出\n- 修复导出的 HTML 中的字符转义\n\n### v2.4\n\n- 支持读取音频\n\n## 致谢\n\n1. [roadwide/qqmessageoutput](https://github.com/roadwide/qqmessageoutput)\n\n2. [WincerChan/export.py](https://gist.github.com/WincerChan/362331456a6e0417c5aa1cf3ff7be2b7)\n\n3. [Yiyiyimu/QQ-History-Backup](https://github.com/Yiyiyimu/QQ-History-Backup) （本仓库的来源，致敬！同时，源代码基于 MIT 协议使用。）\n\n4. [ZhangJun2017/QQChatHistoryExporter](https://github.com/ZhangJun2017/QQChatHistoryExporter) （参考了 Protobuf 相关内容）\n\n## 适配新类型笔记\n\n1. 下载 [protoc](https://github.com/protocolbuffers/protobuf/releases) 这一可执行文件，设置可执行权限（仅 Linux 类系统）并移动到适当位置（位于 PATH 环境变量中的目录）\n\n2. 编辑`proto/RichMsg.proto`，增加新类型（可以参照[此项目](https://github.com/ZhangJun2017/QQChatHistoryExporter/blob/f97eb64581229a30514d55aa0a8423b138b09437/src/RawMessage.java#L41)）\n\n3. 切换到目录`proto`中，运行`compile`，在 Windows 下需先将其改名为`compile.bat`\n\n4. 编辑`QQ_History.py`中的`decrypt`，加入`msgtype`对应判断与处理代码\n\n5. **记得写文档**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FQQBackup%2FQQ-History-Backup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FQQBackup%2FQQ-History-Backup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FQQBackup%2FQQ-History-Backup/lists"}