#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
测试完整字幕和封面生成
"""

import os
import json
import sys

# 配置信息
CONFIG = {
    "videoPath": r"C:\Users\Administrator\Desktop\视频生成\对比结果\121212.mp4",
    "scriptText": "今天天气真好！\n明天下雨。\n我们去公园玩吧。\n这个电影太好看了。\n质量不好，我很失望。",
    "subtitleStyle": "emotion-mixed",  # 使用情感混合模式
    "coverStyle": "default",
    "outputDir": r"C:\Users\Administrator\AppData\Roaming\aigcpanel\data\temp\test_full_generation",
    "useFunasr": False,
    "coverOnly": False
}

def main():
    print("=" * 60)
    print("测试完整字幕和封面生成")
    print("=" * 60)

    # 确保输出目录存在
    os.makedirs(CONFIG["outputDir"], exist_ok=True)

    # 保存配置文件
    config_path = os.path.join(CONFIG["outputDir"], "config.json")
    with open(config_path, 'w', encoding='utf-8') as f:
        json.dump(CONFIG, f, ensure_ascii=False, indent=2)

    print(f"\n配置文件已保存: {config_path}")
    print("\n开始生成...\n")

    # 调用字幕生成器
    from subtitle_cover_generator_simple import SubtitleCoverGenerator

    generator = SubtitleCoverGenerator(CONFIG)
    result = generator.generate_all()

    print("\n" + "=" * 60)
    print("生成结果:")
    print("=" * 60)
    print(json.dumps(result, ensure_ascii=False, indent=2))

    if result['success']:
        print("\n✓ 生成成功!")
        print(f"\n封面路径: {result.get('coverPath')}")
        print(f"视频路径: {result.get('videoPath')}")
        print(f"\nNLP分析结果:")
        print(f"  标题: {result['nlpAnalysis'].get('title')}")
        print(f"  关键词: {result['nlpAnalysis'].get('keywords')}")
        print(f"  情感: {result['nlpAnalysis'].get('sentiment')} (分数: {result['nlpAnalysis'].get('sentiment_score', 0):.4f})")
        print(f"\n字幕数量: {len(result.get('subtitles', []))}")

        # 打印每个字幕的情感和样式
        print("\n字幕详情:")
        for i, subtitle in enumerate(result.get('subtitles', []), 1):
            print(f"  {i}. {subtitle['text']}")
            print(f"     情感: {subtitle['sentiment']} (分数: {subtitle['sentiment_score']:.4f}) -> 样式: {subtitle['style']}")

        return 0
    else:
        print(f"\n✗ 生成失败: {result.get('error')}")
        return 1

if __name__ == '__main__':
    sys.exit(main())
