From 32562f62e75f8cffea20b5d7080fc79b64bb9ef5 Mon Sep 17 00:00:00 2001 From: jinye_huang Date: Sun, 27 Apr 2025 12:56:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BD=93=E5=89=8D=E5=AD=98=E5=9C=A8=E6=B5=B7?= =?UTF-8?q?=E6=8A=A5=E7=94=9F=E6=88=90=E8=BF=87=E7=A8=8B=E4=B8=AD=EF=BC=8C?= =?UTF-8?q?=E5=AF=B9=E4=BA=8E=E6=9C=AB=E5=B0=BE=E7=AF=87=E6=95=B0=E5=8F=AF?= =?UTF-8?q?=E8=83=BD=E5=AD=98=E5=9C=A8=E6=B5=B7=E6=8A=A5=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E6=89=BE=E5=88=B0=E8=B7=AF=E5=BE=84=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0=E4=BA=86=E5=BC=BA=E5=88=B6=E8=B7=AF?= =?UTF-8?q?=E5=BE=84=E5=88=9B=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 14 ++++++++++++-- poster_gen_config.json | 4 ++-- .../output_handler.cpython-312.pyc | Bin 12559 -> 13191 bytes utils/output_handler.py | 17 ++++++++++++++++- 4 files changed, 30 insertions(+), 5 deletions(-) diff --git a/main.py b/main.py index 9ea33d6..6b8081f 100644 --- a/main.py +++ b/main.py @@ -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) - 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: poster_metadata_path = os.path.join(poster_dir, metadata_files[0]) diff --git a/poster_gen_config.json b/poster_gen_config.json index e96eb2e..345dd3f 100644 --- a/poster_gen_config.json +++ b/poster_gen_config.json @@ -42,13 +42,13 @@ { "type": "Object", "file_path": [ - "./resource/Object/乌镇民宿.txt" + "./resource/Object/安吉银润锦江城堡酒店.txt" ] }, { "type": "Description", "file_path": [ - "./resource/Object/乌镇民宿.txt" + "./resource/Object/安吉银润锦江城堡酒店.txt" ] }, { diff --git a/utils/__pycache__/output_handler.cpython-312.pyc b/utils/__pycache__/output_handler.cpython-312.pyc index a8708abed41b09064924a0aea51ea5d3691f93f0..ee6c618559fa799f96358959859273d3cd1107e2 100644 GIT binary patch delta 1866 zcmZuxe{2(V6#stj+PhwR*WWGewyrIsv}G-Wv5|#jM9>Is4&tT|1_nlNfeo$D7RT^9 ziDJ-*8RM&A6USzZ$z*6CHE{tW1QP=rCMBSgZIKx_z`v|of5e&SyLR0#X_N1J@B2RQ zecq3|Yu|lrk9J59)Chh@2ZX(}r$cMQyE?qVG7*XRIi{YW&;}&ZN0F##RP@s_5TSZD zbE||~rjebwRb4pp5{1=?e<&lyI-*nD!REwIidG8SNr=6QJ!GlsIA#+G)d3nWPk8vV z7?&oJf<)npM2-GSC0?H}Sl?uDeWJU-s>BBppSnx2`Z$BoDI_VQF7ijvU8XpVL`tII zq$L_oMK{}zvvpzAs+1HWv(JZ6RMuEoi}Xq43~wd>>eaL=#*kmM1yr+!yw98Ls!Sf0 zoTr=ar?Oe%+Cbg(Or^)#-l9*;4xnMIF=4y(vl3cM$Vq}gm zmYBF^Uj9{TX(m3-hi{9@xB#W|nbK)dhzsE&u(i{+7VLZ&gww9eB-TUWGwsWp%xq^o`DhZK_xp|;yeMxNO>uefpvn98HS($Z_6CN`Oc+_Ov!|6M5*{bTggnITXv!K_tCs5v}JI<(~6$6gR{iId5~J+)N288AO|CKbP09 z$a*jmmGVEA6QkIIX4!1B`Q)#q<@v5$z9lG988^c9%gnt zF%RkU7ChEJodct7Kpr=?!5r(RwHDlh4$<3C3ob&j`DCU!WWG6MPI(JJW_lQzZvmO9 z%`{C0+ANvhb<)>bdys?5CO+?-eC@;g?;bsv2iD~2FD74YzxU4hdvAR*F>vwzM;Beb zr(f9L6mlI_2V7ekB25k9nCqYkp#C3^yz=0)#DmMnCN6hRe%uM>CerF#LeBWMpY#)* zC9)DwBWz1UB-|9j)Q%G=v&=H-z?$aQh=o;n>c`Lm?t8`+1!N0Z~1C z&5ocSboMdc)V}$R&7Dns>Ru_is^;3hYtJU@#bje7DMnKW7Po-{;n+x}5fYxDzT=IA zExx-q&7gcokGIR)6X*)`#)iEWH@y`D)?403u57NWIWWodOeJyfCq z{7|_PZid#-vR=v6(DV(a^vSjKjkQY9Lz&Mo84r%&OXSk>4{$NrS@L~trPAJ4mqH*0 zU?(7wbz8Dh+>?>8p$$|OEDC&}Z=vd`-!gg|rj$ZwG>t$+3{ZAtIUIhDw6AdD2syjL zyDknF^4l3Lfg?p@j7JeSiZr80dlwarB7Iun#=?n5(+EU*Bd(>e(E0rDNS2wD{{h=f B)r0^5 delta 1348 zcmZuwUuauZ7(d_ro15O7+}xX_xlNO_OV&1Rli8LrA5`2Xu8mG)(P1mnwY#HhhqX(B zarUI^gWy1Amh<3X3=|Qf4XEU0pbwo0O($Z857jYrzWHW!6~#X2IXBIsU;^j&{r!Ev z@7#M|pSwKk`AXB=i2h8hp8as&nkNL$t@WpdIdlx!{AwocskONZR!#NY&3==Xpp~Q|d17cPSFPY15=>S<=njgoRQZ|3p`nhcN^GkixsIA281QDx<5c3PUsqs zB}TFcSSoce0`gYEGd*j|C5?`DIiq=7DQSyw>bv)RH}%5>tvMK>1y9Rrquqf8DpI8a zp&13_u%ZPYxe+x@z#QhWR?*glX1?Tc<{#=az+@HVg+3KDa=9xK_BdQ#tWvE)n-9ym zuW3(=-0L$PEcQo;-mhr7MJa9HtMn{+X=apVA-u<`Jczxm%P8pzDnyzB5W>1`*k;Aw zdfW$5$ybQAvI{+oV84ugcEAo+I$OfoV(j1I1XOTj%T3uKGB9xP;=UG30_Bn=<6oDT zXl2@HTh78=Sf^JQ#s*zmYOg)XF49;ru$tYoicmza@RO(raa8#4B(ph*JemwWv`5>` z?vc`(|3ho8&~L+`rB<6Z86m653*?Ex1UyAv8hl<(Lhcc&m)smA;3pq@t=MgMzA%$3 zh`*&L1WO zjza^nb9YBVq2AvRu!i{qv5VXO>AHWq;ck}hHZ+!DRk}s1DE}SR+*TvE)X2MPd8+*6 zb!8*D5w0Dnov)p)M^9|4*}9s&>kZMNyA7E&{FQ%}uJL8?NNOU0HU-ak585=k#{K-} zaGcsTzc?O|YnIIHo|H0S@U>)gLgTk&fi`SuB8_YrJhKBzM&`Go(G17m!KFLjS_gHyj7C2G6lHWlT zay}|Jm!?P3MgAU*k@#5L&7KAOI`hNi=`nxLj?fF*+edd0g`IJDj05e;i@zg=PWwOf CJv-t6 diff --git a/utils/output_handler.py b/utils/output_handler.py index f966a1f..72b0192 100644 --- a/utils/output_handler.py +++ b/utils/output_handler.py @@ -2,6 +2,7 @@ import os import json import logging from abc import ABC, abstractmethod +import traceback class OutputHandler(ABC): """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): """处理生成的图像,对于笔记图像和额外配图保存到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目录 # 创建run_id/i_j/image目录 @@ -144,7 +149,15 @@ class FileSystemOutputHandler(OutputHandler): logging.warning(f"未知图像类型 '{image_type}',保存到变体根目录。") 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) try: @@ -163,9 +176,11 @@ class FileSystemOutputHandler(OutputHandler): logging.info(f"保存{image_type}元数据到: {metadata_path}") except Exception as me: logging.error(f"无法保存{image_type}元数据到{metadata_path}: {me}") + traceback.print_exc() except Exception as e: logging.exception(f"无法保存{image_type}图像到{save_path}: {e}") + traceback.print_exc() return save_path