import sqlite3
import edge_tts
import asyncio
import os

# 连接到主数据库
db_path = '\\\\ll\\d\\xtrssvjj\\dpd.db'
conn = sqlite3.connect(db_path)
cur = conn.cursor()

# 获取adid=8476的所有记录
cur.execute('SELECT idx, cn FROM srts WHERE adid=8476 ORDER BY idx')
rows = cur.fetchall()

conn.close()

print(f'找到 {len(rows)} 条记录')

# 创建输出目录
output_dir = '8476_洪老师聊聊_099期_cn_tts'
if not os.path.exists(output_dir):
    os.makedirs(output_dir)

async def generate_tts(idx, text, output_path):
    """生成TTS音频文件"""
    try:
        # 中文TTS
        communicate = edge_tts.Communicate(text, "zh-CN-YunxiNeural")
        await communicate.save(output_path)
        print(f'✓ 生成中文TTS: {output_path}')
    except Exception as e:
        print(f'✗ 生成中文TTS失败: {output_path}, 错误: {e}')

async def main():
    """主函数"""
    tasks = []
    for idx, cn_text in rows:
        # 跳过空文本
        if not cn_text or cn_text.strip() == '':
            print(f'跳过空文本: idx={idx}')
            continue
        
        # 生成输出文件名
        output_file = os.path.join(output_dir, f'cn_tts_{idx:03d}.mp3')
        
        # 创建任务
        task = generate_tts(idx, cn_text, output_file)
        tasks.append(task)
    
    # 执行所有任务
    await asyncio.gather(*tasks)

if __name__ == "__main__":
    asyncio.run(main())
    print('\n中文TTS生成完成！')