当前存在海报生成过程中,对于末尾篇数可能存在海报无法找到路径的问题,增加了强制路径创建

This commit is contained in:
jinye_huang 2025-04-27 12:56:48 +08:00
parent b600876368
commit 32562f62e7
4 changed files with 30 additions and 5 deletions

14
main.py
View File

@ -214,8 +214,18 @@ def generate_content_and_posters_step(config, run_id, topics_list, output_handle
# 获取海报元数据路径 # 获取海报元数据路径
poster_dir = os.path.join(variant_dir, poster_subdir) poster_dir = os.path.join(variant_dir, poster_subdir)
metadata_files = [f for f in os.listdir(poster_dir)
if f.endswith("_metadata.json") and os.path.isfile(os.path.join(poster_dir, f))] # 添加目录存在检查
if not os.path.exists(poster_dir):
logging.warning(f"海报目录不存在: {poster_dir}, 跳过此变体的额外配图处理")
continue
try:
metadata_files = [f for f in os.listdir(poster_dir)
if f.endswith("_metadata.json") and os.path.isfile(os.path.join(poster_dir, f))]
except Exception as e:
logging.warning(f"访问海报目录时出错: {e}, 跳过此变体的额外配图处理")
continue
if metadata_files: if metadata_files:
poster_metadata_path = os.path.join(poster_dir, metadata_files[0]) poster_metadata_path = os.path.join(poster_dir, metadata_files[0])

View File

@ -42,13 +42,13 @@
{ {
"type": "Object", "type": "Object",
"file_path": [ "file_path": [
"./resource/Object/乌镇民宿.txt" "./resource/Object/安吉银润锦江城堡酒店.txt"
] ]
}, },
{ {
"type": "Description", "type": "Description",
"file_path": [ "file_path": [
"./resource/Object/乌镇民宿.txt" "./resource/Object/安吉银润锦江城堡酒店.txt"
] ]
}, },
{ {

View File

@ -2,6 +2,7 @@ import os
import json import json
import logging import logging
from abc import ABC, abstractmethod from abc import ABC, abstractmethod
import traceback
class OutputHandler(ABC): class OutputHandler(ABC):
"""Abstract base class for handling the output of the generation pipeline.""" """Abstract base class for handling the output of the generation pipeline."""
@ -122,6 +123,10 @@ class FileSystemOutputHandler(OutputHandler):
def handle_generated_image(self, run_id: str, topic_index: int, variant_index: int, image_type: str, image_data, output_filename: str, metadata: dict = None): def handle_generated_image(self, run_id: str, topic_index: int, variant_index: int, image_type: str, image_data, output_filename: str, metadata: dict = None):
"""处理生成的图像对于笔记图像和额外配图保存到image目录其他类型保持原有路径结构""" """处理生成的图像对于笔记图像和额外配图保存到image目录其他类型保持原有路径结构"""
if not image_data:
logging.warning(f"传入的{image_type}图像数据为空 (Topic {topic_index}, Variant {variant_index})。跳过保存。")
return
# 根据图像类型确定保存路径 # 根据图像类型确定保存路径
if image_type == 'note' or image_type == 'additional': # 笔记图像和额外配图保存到image目录 if image_type == 'note' or image_type == 'additional': # 笔记图像和额外配图保存到image目录
# 创建run_id/i_j/image目录 # 创建run_id/i_j/image目录
@ -144,7 +149,15 @@ class FileSystemOutputHandler(OutputHandler):
logging.warning(f"未知图像类型 '{image_type}',保存到变体根目录。") logging.warning(f"未知图像类型 '{image_type}',保存到变体根目录。")
subdir = None # 如果类型未知,直接保存到变体目录 subdir = None # 如果类型未知,直接保存到变体目录
target_dir = self._get_variant_dir(run_id, topic_index, variant_index, subdir=subdir) # 确保目标目录存在
variant_dir = os.path.join(self._get_run_dir(run_id), f"{topic_index}_{variant_index}")
if subdir:
target_dir = os.path.join(variant_dir, subdir)
os.makedirs(target_dir, exist_ok=True)
else:
target_dir = variant_dir
os.makedirs(target_dir, exist_ok=True)
save_path = os.path.join(target_dir, output_filename) save_path = os.path.join(target_dir, output_filename)
try: try:
@ -163,9 +176,11 @@ class FileSystemOutputHandler(OutputHandler):
logging.info(f"保存{image_type}元数据到: {metadata_path}") logging.info(f"保存{image_type}元数据到: {metadata_path}")
except Exception as me: except Exception as me:
logging.error(f"无法保存{image_type}元数据到{metadata_path}: {me}") logging.error(f"无法保存{image_type}元数据到{metadata_path}: {me}")
traceback.print_exc()
except Exception as e: except Exception as e:
logging.exception(f"无法保存{image_type}图像到{save_path}: {e}") logging.exception(f"无法保存{image_type}图像到{save_path}: {e}")
traceback.print_exc()
return save_path return save_path