#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
Vibrant海报生成使用示例
展示如何使用重构后的海报生成功能
"""

import asyncio
from pathlib import Path
from PIL import Image

# 导入算法包
from travel_algorithms import (
    create_poster_pipeline, 
    create_default_config,
    PosterGenerator,
    TextGenerator
)


async def simple_vibrant_example():
    """简单的Vibrant海报生成示例"""
    
    print("🎨 Vibrant海报生成示例")
    print("=" * 40)
    
    # 1. 创建配置（指向你的资源目录）
    config = create_default_config(
        resource_base_directory="./resource"  # 你的提示词目录
    )
    
    # 2. 创建海报生成流水线
    pipeline = create_poster_pipeline(config)
    poster_generator = pipeline["poster_generator"]
    text_generator = pipeline["text_generator"]
    
    # 3. 准备内容数据（也可以让AI生成）
    content = {
        "title": "正佳极地海洋世界",
        "slogan": "都说海洋馆是约会圣地！那锦峰夜场将是绝杀！",
        "price": "199",
        "ticket_type": "夜场票",
        "content_button": "套餐内容",
        "content_items": [
            "正佳极地海洋世界夜场票1张",
            "有效期至2025.06.02",
            "多种动物表演全部免费"
        ],
        "remarks": [
            "工作日可直接入园",
            "周末请提前1天预约"
        ],
        "tag": "#520特惠",
        "pagination": "1/3"
    }
    
    # 4. 生成海报（支持多种输出格式）
    
    # 4a. 透明底图版本
    print("\n🖼️ 生成透明底图海报...")
    transparent_poster = await poster_generator.generate_poster(
        content=content,
        images=[],  # 无底图
        template_name="vibrant",
        use_transparent_bg=True,
        output_format="image"
    )
    
    # 保存透明底图海报
    output_dir = Path("output")
    output_dir.mkdir(exist_ok=True)
    transparent_poster.save(output_dir / "vibrant_transparent.png")
    print("✅ 透明底图海报已保存")
    
    # 4b. Fabric.js JSON版本（用于Web编辑器）
    print("\n🔧 生成Fabric.js JSON...")
    test_bg = Image.new("RGB", (900, 1200), (50, 100, 150))
    
    fabric_json = await poster_generator.generate_poster(
        content=content,
        images=[test_bg],
        template_name="vibrant",
        output_format="fabric_json"
    )
    
    import json
    with open(output_dir / "vibrant_fabric.json", 'w', encoding='utf-8') as f:
        json.dump(fabric_json, f, ensure_ascii=False, indent=2)
    print("✅ Fabric.js JSON已保存")
    
    # 4c. 分层数据版本（替代PSD）
    print("\n📚 生成分层数据...")
    layer_data = await poster_generator.generate_poster(
        content=content,
        images=[test_bg],
        template_name="vibrant",
        output_format="layers"
    )
    
    print(f"✅ 生成了 {len(layer_data)} 个图层")
    for i, layer in enumerate(layer_data):
        print(f"  - {layer['name']}: {layer['type']}")
    
    print("\n🎉 所有格式生成完成！")


async def ai_content_generation_example():
    """AI内容生成示例"""
    
    print("\n🤖 AI内容生成示例")
    print("=" * 40)
    
    # 创建文本生成器
    config = create_default_config(resource_base_directory="./resource")
    pipeline = create_poster_pipeline(config)
    text_generator = pipeline["text_generator"]
    
    # 准备信息
    scenic_info = """
    上海迪士尼乐园
    - 位于上海浦东新区
    - 拥有六大主题园区
    - 适合全家游玩
    - 有独特的中国文化元素
    """
    
    product_info = """
    一日门票套餐
    - 标准票价：499元
    - 包含：乐园门票1张
    - 有效期：购买后6个月内
    - 特色：所有游乐设施无限次
    """
    
    try:
        # 让AI生成Vibrant格式的内容
        ai_content = await text_generator.generate_vibrant_content(
            scenic_info=scenic_info,
            product_info=product_info,
            tweet_info="神奇王国等你来探索！"
        )
        
        print("✅ AI生成的内容:")
        import json
        print(json.dumps(ai_content, ensure_ascii=False, indent=2))
        
        # 用AI生成的内容创建海报
        config = create_default_config(resource_base_directory="./resource")
        pipeline = create_poster_pipeline(config)
        poster_generator = pipeline["poster_generator"]
        
        ai_poster = await poster_generator.generate_poster(
            content=ai_content,
            images=[],
            template_name="vibrant",
            use_transparent_bg=True,
            output_format="image"
        )
        
        output_dir = Path("output")
        output_dir.mkdir(exist_ok=True)
        ai_poster.save(output_dir / "ai_generated_poster.png")
        print("✅ AI生成的海报已保存")
        
    except Exception as e:
        print(f"❌ AI内容生成失败: {e}")
        print("可能是因为没有配置AI服务或提示词文件")


def show_config_example():
    """展示配置示例"""
    
    print("\n⚙️ 配置示例")
    print("=" * 40)
    
    # 展示如何自定义配置
    config = create_default_config(
        resource_base_directory="./resource",
        ai_model="gpt-4",  # 可以换成其他模型
        # 还可以添加更多配置...
    )
    
    print("✅ 配置创建成功")
    print(f"  - AI模型: {config.ai_model.model}")
    print(f"  - 资源目录: {config.resources.resource_base_directory}")
    print(f"  - 海报默认尺寸: {config.poster_generation.default_size}")
    print(f"  - 支持的颜色主题: {list(config.poster_generation.color_themes.keys())}")


async def main():
    """主函数"""
    
    print("🚀 Vibrant海报生成系统使用示例")
    print("📖 本示例展示了重构后的海报生成功能")
    print("\n包含的新功能:")
    print("  ✨ 透明底图支持")
    print("  ✨ Fabric.js JSON输出")
    print("  ✨ 分层数据（替代PSD）")
    print("  ✨ AI驱动的内容生成")
    print("  ✨ 两栏布局设计")
    print("  ✨ 动态提示词加载")
    print("\n" + "=" * 50)
    
    # 展示配置
    show_config_example()
    
    # 简单的海报生成
    await simple_vibrant_example()
    
    # AI内容生成（需要AI服务配置）
    await ai_content_generation_example()
    
    print("\n" + "=" * 50)
    print("🎊 示例演示完成！")
    print("\n📁 生成的文件保存在 ./output/ 目录下")
    print("📖 查看 vibrant_fabric.json 了解Fabric.js格式")
    print("🎨 查看 *.png 文件了解海报效果")


if __name__ == "__main__":
    asyncio.run(main()) 