#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 示例脚本:处理已生成的选题,执行内容和海报生成步骤 (阶段 2) """ import os import sys import json import argparse # 添加项目根目录到Python路径 sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) # 导入所需模块 from main import load_config, generate_content_and_posters_step from core.topic_parser import TopicParser if __name__ == "__main__": parser = argparse.ArgumentParser(description='阶段 2: 处理指定 Run ID 的选题,生成内容和海报') parser.add_argument('run_id', type=str, help='阶段 1 生成的 Run ID') parser.add_argument('--config', type=str, default='poster_gen_config.json', help='配置文件路径') args = parser.parse_args() print(f"==== 阶段 2: 处理 Run ID: {args.run_id} ====") try: # 1. 加载配置 print(f"加载配置 '{args.config}'...") config = load_config(args.config) print("配置加载成功。") # 2. 定位并加载选题文件 output_dir = config.get("output_dir", "./result") topics_file = os.path.join(output_dir, args.run_id, "tweet_topic.json") print(f"\n尝试加载选题文件: {topics_file}...") if not os.path.exists(topics_file): print(f"错误: 选题文件 '{topics_file}' 未找到。请确保 Run ID 正确且阶段 1 已成功执行。") sys.exit(1) with open(topics_file, 'r', encoding='utf-8') as f: topics_data = json.load(f) loaded_topic_record = TopicParser.from_json(topics_data) if not loaded_topic_record or not loaded_topic_record.topics_list: print(f"错误: 从 '{topics_file}' 加载选题数据失败或选题列表为空。") sys.exit(1) print(f"从 {topics_file} 加载了 {len(loaded_topic_record.topics_list)} 个选题。") # 3. 执行内容和海报生成步骤 print("\n执行内容和海报生成...") generate_content_and_posters_step(config, args.run_id, loaded_topic_record) print("\n==== 内容和海报生成完成 ====") print(f"结果保存在: {os.path.join(output_dir, args.run_id)}") except Exception as e: print(f"\n处理过程中出错: {e}") import traceback traceback.print_exc() sys.exit(1)