61 lines
2.4 KiB
Python
61 lines
2.4 KiB
Python
#!/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) |