#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
为"我们需要知识分子吗_思考"生成英文TTS音频
"""

import os
import sqlite3
import asyncio
import edge_tts


def get_srts_data(adid):
    """
    获取srts数据
    """
    db_path = r"\\ll\\d\\xtrssvjj\\dpd.db"
    conn = sqlite3.connect(db_path)
    cur = conn.cursor()
    
    # 查询srts数据，按idx排序
    cur.execute("SELECT idx, en FROM srts WHERE adid=? AND en IS NOT NULL AND en != '' ORDER BY idx", (adid,))
    srtsdata = cur.fetchall()
    conn.close()
    
    return srtsdata


async def generate_tts(text, output_file):
    """
    生成TTS音频
    """
    communicate = edge_tts.Communicate(text, "en-US-AriaNeural", rate="-30%")
    with open(output_file, "wb") as f:
        async for chunk in communicate.stream():
            if chunk["type"] == "audio":
                f.write(chunk["data"])


async def main():
    adid = 8407
    adname = "我们需要知识分子吗_思考"
    
    # 获取srts数据
    srtsdata = get_srts_data(adid)
    if not srtsdata:
        print("未找到英文字幕数据")
        return
    
    print(f"找到 {len(srtsdata)} 句英文字幕")
    
    # 创建输出目录
    output_dir = f"{adname}_tts"
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)
    
    # 生成TTS
    for idx, en in srtsdata:
        output_file = os.path.join(output_dir, f"tts_{idx}.mp3")
        
        # 如果文件已存在，跳过
        if os.path.exists(output_file):
            print(f"TTS {idx} 已存在，跳过...")
            continue
        
        print(f"正在生成TTS {idx}...")
        try:
            await generate_tts(en, output_file)
            print(f"  成功: {output_file}")
        except Exception as e:
            print(f"  失败: {e}")
    
    print(f"\n完成！TTS音频保存到: {output_dir}")


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