#!/usr/bin/env python3
"""
根据字幕时间截分中文音频（前10句）
"""
import sqlite3
import os
import subprocess

# 数据库路径
db_path = "\\\\ll\\D\\xtrssvjj\\dpd.db"

# 音频文件
audio_path = "\\\\ll\\D\\xtrssvjj\\师徒一场_张雪峰走好_上.mp3"

# 输出目录
audio_segments_dir = "shitu_audio_segments"
if not os.path.exists(audio_segments_dir):
    os.makedirs(audio_segments_dir)

# 查询前10句字幕
try:
    conn = sqlite3.connect(db_path)
    cursor = conn.cursor()

    cursor.execute("SELECT idx, start, end, cn FROM srts WHERE adid = 8281 ORDER BY idx ASC LIMIT 10")
    subtitles = cursor.fetchall()

    print(f"截分前 {len(subtitles)} 句中文音频")
    print("\n字幕时间:")

    for idx, start, end, cn in subtitles:
        start_sec = start / 1000
        end_sec = end / 1000
        duration = end_sec - start_sec

        print(f"  句{idx}: {start_sec:.2f}s - {end_sec:.2f}s ({duration:.2f}s) - {cn[:20]}...")

        # 使用FFmpeg截取音频片段
        output_file = os.path.join(audio_segments_dir, f"audio_line_{idx:03d}.wav")
        
        cmd = [
            'ffmpeg', '-y',
            '-i', audio_path,
            '-ss', f'{start_sec:.3f}',
            '-t', f'{duration:.3f}',
            '-c:a', 'pcm_s16le',
            '-ar', '44100',
            '-ac', '1',
            output_file
        ]

        print(f"  生成: {output_file}")
        result = subprocess.run(cmd, capture_output=True, text=True, encoding='utf-8', errors='ignore')

        if result.returncode != 0:
            print(f"  错误: {result.stderr[-200:] if result.stderr else '未知错误'}")

    conn.close()
    print(f"\n完成！音频片段保存在: {audio_segments_dir}")

except Exception as e:
    print(f"错误: {e}")
