#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
生成韩寒创业简史 下集的英文TTS
"""

import os
import sqlite3
import asyncio
import edge_tts


async def generate_tts(adid):
    """
    生成英文TTS
    """
    db_path = r'\\ll\D\xtrssvjj\db\dpd.db'
    output_dir = f"韩寒创业简史_下集_tts"
    
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)
        print(f"创建输出目录: {output_dir}")
    
    try:
        conn = sqlite3.connect(db_path)
        cursor = conn.cursor()
        
        # 查询英文字幕
        cursor.execute("SELECT idx, en FROM srts WHERE adid = ? ORDER BY idx", (adid,))
        subtitles = cursor.fetchall()
        
        print(f"找到 {len(subtitles)} 句英文字幕")
        
        # TTS配置
        voice = "en-US-AriaNeural"
        rate = "-30%"  # 0.7倍速
        
        for idx, en in subtitles:
            # 去掉最后的标点
            if en.endswith('.') or en.endswith(','):
                en = en[:-1]
            
            # 生成TTS
            communicate = edge_tts.Communicate(en, voice, rate=rate)
            output_path = os.path.join(output_dir, f"tts_{idx:03d}.mp3")
            
            try:
                await communicate.save(output_path)
                
                if (idx + 1) % 10 == 0:
                    print(f"生成TTS {idx + 1}/{len(subtitles)}")
            except Exception as e:
                print(f"生成TTS失败 (idx={idx}): {e}")
        
        print(f"完成！生成了 {len(subtitles)} 个TTS文件")
        
    except Exception as e:
        print(f"错误: {e}")
    finally:
        if 'conn' in locals():
            conn.close()


if __name__ == "__main__":
    adid = 8434
    asyncio.run(generate_tts(adid))