#!/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) 