修复midjourney提示词包含参考图片时响应格式不正确的问题

This commit is contained in:
jingrow 2025-05-20 13:10:54 +08:00
parent f3eb21f5f3
commit 87261dad9f
3 changed files with 29 additions and 7 deletions

2
.gitignore vendored
View File

@ -4,7 +4,7 @@ test/
# 忽略所有 文件夹
**/www/files/
**/jfile/files/
**/output/
**/__pycache__/

View File

@ -593,12 +593,11 @@ class MidjourneyService:
async for result in self.imagine(client, guild_id, channel_id, prompt, seed):
if result.get("status") == "progress":
# 进度信息保持简单
# 进度信息只包含必要字段
response = {
"status": "progress",
"progress": result.get("progress", 0),
"success_count": success_count,
"error_count": error_count
"seed": seed # 添加seed字段
}
print(f"[服务端响应] {json.dumps(response, ensure_ascii=False)}")
yield response
@ -607,11 +606,12 @@ class MidjourneyService:
response = {
"status": "success",
"success_count": success_count,
"error_count": error_count
"error_count": error_count,
"images": result.get("images", []) # 添加images字段
}
# 如果需要分割图片
if config.get("split_image", False) and result.get("images"):
if config.get("split_image", True) and result.get("images"):
try:
orig_image_url = result["images"][0]
split_urls = await self.split_image(orig_image_url)
@ -625,7 +625,7 @@ class MidjourneyService:
print(f"[服务端响应] {json.dumps(response, ensure_ascii=False)}")
yield response
else:
# 错误信息保持简单
# 错误信息保持统一格式
error_count += 1
response = {
"status": "error",

View File

@ -233,3 +233,25 @@ def get_new_image_url(image_url: str) -> str:
raise
except Exception as e:
raise HTTPException(status_code=500, detail=f"图片URL转换异常: {str(e)}")
def sanitize_filename(filename: str) -> str:
"""清理文件名,移除非法字符
Args:
filename: 原始文件名
Returns:
str: 清理后的文件名
"""
# 移除路径分隔符和空字符
filename = re.sub(r'[\\/:*?"<>|\x00-\x1f]', '', filename)
# 移除首尾空白字符
filename = filename.strip()
# 如果文件名为空,使用默认名称
if not filename:
filename = "untitled"
# 限制文件名长度
if len(filename) > 255:
name, ext = os.path.splitext(filename)
filename = name[:255-len(ext)] + ext
return filename