我的电脑QQ的聊天图片文件越来越多了(加的群太多导致的),虽然可以直接删除图片目录,但毕竟有些好友或群聊的图片还想保留着。
于是我研究了一下QQ聊天记录数据库(Msg3.0.db)的解密和解码,用python写了一个工具,用于清理QQ的指定好友或群聊的图片文件。
这个工具只适用于旧版QQ,新版(NTQQ)不适用。
项目地址:https://github.com/h4ckm310n/PC-QQ-Pic-Cleaner
1. 解密
工具不包含解密功能,可参考之前写的解密并读取电脑QQ的聊天记录数据库(Msg3.0.db)来进行解密。
2. 解码
解码功能使用的是qq_msg_decode的代码,在此基础上对于解码后的数据格式做了一点修改,方便解析图片路径。
运行如下命令,此处的“/path/to/db_file”指的是上面解密后的数据库文件的路径:
python3 decode.py “/path/to/db_file”
3. 清理
python3 clean.py (运行参数)
具体参数解释:
-h, –help: 显示说明
–db: 解码后的数据库文件的路径
–cp, –chat-path: 聊天记录所在路径,如“C:\Users\XXX\Documents\Tencent Files\10000”
-f, –friend: 指定的好友QQ号
-g, –group: 指定的群号
-t, –table: 指定的数据表名称
-l, –list: 列出所有的数据表
–scan: 扫描所有聊天记录中的图片文件,并按照图片文件占用空间的大小顺序输出结果
–dry-run: 模拟运行,但不进行实际删除
示例:
列出数据库中所有的表:
python3 clean.py –db “C:\Users\XXX\Desktop\10000_decode.db” –cp “C:\Users\XXX\Documents\Tencent Files\10000” -l
删除好友1234的聊天图片:
python3 clean.py –db “C:\Users\XXX\Desktop\10000_decode.db” –cp “C:\Users\XXX\Documents\Tencent Files\10000” -f 1234
模拟删除群聊1234的聊天图片(但实际并没有删除):
python3 clean.py –db “C:\Users\XXX\Desktop\10000_decode.db” –cp “C:\Users\XXX\Documents\Tencent Files\10000” -g 1234 –dry-run
参考
1. https://github.com/QQBackup/qq-win-db-key
2. https://github.com/saucer-man/qq_msg_decode