mirror of
https://github.com/LC044/WeChatMsg
synced 2025-04-17 00:48:23 +08:00
62 lines
1.6 KiB
Python
62 lines
1.6 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
@Time : 2024/12/12 22:52
|
|
@Author : SiYuan
|
|
@Email : 863909694@qq.com
|
|
@File : MemoTrace-file_parser.py
|
|
@Description :
|
|
"""
|
|
|
|
import xmltodict
|
|
|
|
from wxManager.log import logger
|
|
|
|
|
|
def get_image_type(header):
|
|
# 根据文件头判断图片类型
|
|
if header.startswith(b'\xFF\xD8'):
|
|
return 'jepg'
|
|
elif header.startswith(b'\x89PNG'):
|
|
return 'png'
|
|
elif header[:6] in (b'GIF87a', b'GIF89a'):
|
|
return 'gif'
|
|
elif header.startswith(b'BM'):
|
|
return 'bmp'
|
|
elif header.startswith(b'\x00\x00\x01\x00'):
|
|
return 'ico'
|
|
elif header.startswith(b'\x49\x49\x2A\x00') or header.startswith(b'\x4D\x4D\x00\x2A'):
|
|
return 'tiff'
|
|
elif header.startswith(b'RIFF') and header[8:12] == b'WEBP':
|
|
return 'webp'
|
|
else:
|
|
return 'png'
|
|
|
|
|
|
def parse_video(xml_content):
|
|
result = {
|
|
'md5': 0
|
|
}
|
|
xml_content = xml_content.strip()
|
|
try:
|
|
xml_dict = xmltodict.parse(xml_content)
|
|
# logger.error(json.dumps(xml_dict))
|
|
video_dic = xml_dict.get('msg', {}).get('videomsg', {})
|
|
md5 = video_dic.get('@md5', '') # 下载后压缩视频的md5
|
|
rawmd5 = video_dic.get('@rawmd5', '') # 原视频md5
|
|
result = {
|
|
'md5': md5,
|
|
'rawmd5': rawmd5,
|
|
'length': video_dic.get('@playlength', 0),
|
|
'size': video_dic.get('@length', 0)
|
|
}
|
|
except:
|
|
logger.error(f'视频解析失败\n{xml_content}')
|
|
finally:
|
|
return result
|
|
|
|
|
|
if __name__ == '__main__':
|
|
pass
|