# ------------
# 配音块生成模块（简化版）
# 该模块负责为每个翻译片段准备语速调整信息
# 主要功能：
# - 直接使用翻译结果的分块，不做任何合并
# - 为每个片段计算所需的语速调整因子
# - 保持与8-1输出完全一致的分块结构
# ------------

import json
import os
from typing import List, Dict

from core.utils import *
from core.utils.models import *
from rich.console import Console

console = Console()

# ------------
# 简化的配音块生成主函数
# 直接使用翻译结果，为每个片段计算语速调整参数
# 不进行任何合并或切分，保持原始分块结构
# ------------
@check_file_exists(_DUB_CHUNKS)
def gen_dub_chunks():
    """生成配音块配置（简化版 - 无合并功能）"""
    rprint("[bold cyan]🎬 Starting simple dubbing chunks generation...[/bold cyan]")
    
    # 读取翻译结果
    rprint("[cyan]📖 Reading translation results...[/cyan]")
    with open(_TRANSLATE_RESULT, 'r', encoding='utf-8') as f:
        translate_result = json.load(f)
    
    rprint(f"[green]✅ Loaded {len(translate_result)} translation segments[/green]")
    
    # 直接转换翻译结果为配音任务，保持完全一致的分块
    tasks = []
    for i, segment in enumerate(translate_result):
        # 计算基础时长信息
        start_time = segment['start']
        end_time = segment['end'] 
        duration = end_time - start_time
        
        # 严格按原始时长
        tolerance = 0.0  # 严格按原始时长
        target_duration = duration  # 不允许任何延长
        
        # 每个片段都是独立的块（cut_off=1）
        task = {
            'task_id': segment['id'],
            'text': segment['translated_text'],
            'start_time': start_time,
            'end_time': end_time,
            'duration': duration,
            'tolerance': tolerance,
            'target_duration': target_duration,  # 目标时长
            'cut_off': 1  # 每个片段都是独立的块
        }
        
        tasks.append(task)
    
    rprint(f"[green]📊 Generated {len(tasks)} independent audio segments[/green]")
    rprint(f"[cyan]🔧 Each segment will be processed independently[/cyan]")
    
    # 保存配音块配置
    os.makedirs('output', exist_ok=True)
    with open(_DUB_CHUNKS, 'w', encoding='utf-8') as f:
        json.dump(tasks, f, ensure_ascii=False, indent=2)
    
    rprint(f"[bold green]✅ Dubbing chunks saved to {_DUB_CHUNKS}[/bold green]")

# ------------
# 主程序入口
# ------------
if __name__ == "__main__":
    gen_dub_chunks()