加入CND图片保存逻辑

This commit is contained in:
liuwei
2025-05-07 13:59:25 +08:00
parent 2df93f29f5
commit 0d6e047c5d
4 changed files with 35 additions and 46 deletions

View File

@@ -1,3 +1,4 @@
import asyncio
import time
from datetime import datetime, timedelta
import xml.etree.ElementTree as ET
@@ -112,44 +113,32 @@ class MessageStorage:
try:
# 使用wcf下载图片确保图片存在
if self.client and msg.msg_id:
# 创建按群ID或个人wxid分割的目录
target_dir = os.path.join(self.image_dir, msg.roomid if msg.roomid else msg.sender)
# 确保目标目录存在
if not os.path.exists(target_dir):
os.makedirs(target_dir, exist_ok=True)
# 尝试使用wcf下载图片到分组后的目录
# json = self.client.download_image(msg.appid, msg.content.xml_content, 2)
# # {
# # "ret": 200,
# # "msg": "操作成功",
# # "data": {
# # "fileUrl": "/download/20240720/wx_BTVoJ_o_r6DpxNCNiycFE/0ca5b675-8e2c-4dc1-b288-3c44a40086ec4"
# # }
# # }
# # 解析JSON http://192.168.2.240:2532/download/20250428/wx_3BC6eSHGE5xEm_hH3__7c/03ab5c03-5524-4a39-aabe-27ca014a4d1e.png
# if json and json.get('data') and json['data'].get('fileUrl'):
# file_url = json['data']['fileUrl']
# if file_url:
# logger.info(f"记录gewe服务端图片路径成功: {msg.msg_id} -> {file_url}")
# # 后续如果需要使用,则去服务器端提取图片
# # 直接使用下载后的路径更新数据库
# self.message_db.update_message_image_path(msg.msg_id, file_url)
#
# return {
# 'success': True,
# 'message_id': msg.msg_id,
# 'roomid': msg.roomid,
# 'sender': msg.sender,
# 'file_path': file_url
# }
# else:
# return {
# 'success': False,
# 'message_id': msg.msg_id,
# 'roomid': msg.roomid,
# 'sender': msg.sender,
# 'error': "图片下载失败"
# }
# 从msg中提取xml内容获取xml里面的参数
xml_content = msg.content.clean_content
root = ET.fromstring(xml_content)
img_elem = root.find("img")
if img_elem is not None:
aeskey = img_elem.attrib.get("aeskey", "")
cdnthumburl = img_elem.attrib.get("cdnthumburl", "")
base64_str = asyncio.run(self.client.download_image(aeskey=aeskey, cdnmidimgurl=cdnthumburl))
if base64_str:
self.message_db.update_message_image_path(msg.msg_id, "data:image/png;base64," + base64_str)
return {
'success': True,
'message_id': msg.msg_id,
'roomid': msg.roomid,
'sender': msg.sender,
'file_path': base64_str
}
else:
return {
'success': False,
'message_id': msg.msg_id,
'roomid': msg.roomid,
'sender': msg.sender,
'error': "图片下载失败"
}
else:
return {
'success': False,