# py_mht2html
**Repository Path**: siyuw/py_mht2html
## Basic Information
- **Project Name**: py_mht2html
- **Description**: python实现的mht文件转为html格式,用于QQ聊天记录导出的mht文件处理。
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-10-28
- **Last Updated**: 2025-10-28
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# mht2html 工具集说明
本项目用于将 Windows版 QQ 导出的 MHT 文件(.mht/.mhtml)备份文件,批量转换为 HTML,并提取其中的嵌入媒体资源,支持去重、扩展名修正和安全引用替换,方便保存和查看。
## 目录结构
```
QQMht/
├── input/ # 存放原始 .mht 文件
├── output/ # 输出目录,每个 MHT 文件一个子目录
│ └── / # 以 MHT 文件名为子目录名
│ ├── .html # 主 HTML 文件
│ ├── att/ # 提取的媒体资源
│ └── archive/ # 归档的 part-*.dat 等无用附件
├── tools/
│ ├── mht_to_html.py # MHT 解析与提取主脚本
│ └── dedupe_att.py # 附件去重与 HTML 引用修正脚本
└── README.md # 项目说明
```
## 依赖环境
- Python 3.7+
- 依赖包:`beautifulsoup4`
安装依赖:
```sh
pip install beautifulsoup4
```
## 使用方法
### 1. MHT 转 HTML 并提取附件
将 MHT 文件(如 `input/bm.mht`)转换为 HTML 并提取嵌入资源:
```sh
python tools/mht_to_html.py input/bm.mht
```
- 输出:`output/bm/bm.html`,附件在 `output/bm/att/`,无用 part-*.dat 归档到 `output/bm/archive/`
- 支持自动识别 Content-Type 并修正扩展名
- HTML 中的 src/href 会自动指向 att 目录下的文件
### 2. 附件去重与 HTML 引用修正
对提取出的附件按内容哈希去重,并自动修正 HTML 中的引用:
```sh
python tools/dedupe_att.py --att output/bm/att --html output/bm/bm.html
```
- 仅保留唯一的媒体文件,HTML 引用自动更新
### 3. 批量处理
可将多个 .mht 文件放入 `input/` 目录,循环调用上述脚本批量处理。
## 主要功能说明
- **MHT 解析**:手动解析 MIME,兼容 QQ 邮件格式
- **扩展名修正**:优先用 Content-Type 判定扩展名,避免 .dat
- **安全 HTML 更新**:用 BeautifulSoup 精确替换 src/href
- **附件去重**:按 SHA256 合并重复文件,HTML 引用同步更新
- **归档无用附件**:part-*.dat 自动移入 archive 目录
## 注意事项
- 若遇到特殊编码或解析失败,可手动检查 input/ 下的原始 MHT 文件
- 若 HTML 引用未生效,请确认 dedupe_att.py 是否已正确运行
## 关于代码生成
本项目中的脚本和辅助工具在初始实现阶段由 AI 辅助生成并在本仓库中迭代完善。AI 提供了自动化的实现草案(包括 `tools/mht_to_html.py`、`tools/dedupe_att.py` 等),随后由人工进行审阅、修正和测试。
注意事项:
- 虽然已尽量保证行为可靠性,但建议在生产或重要数据上使用前先在备份数据上验证输出。
- AI 生成代码在边界条件、编码或极端输入下可能需要额外的人为审查与单元测试。请将该仓库视为“有 AI 辅助开发”的起点而非最终保证无缺陷的产品。