#!/usr/bin/env python3
"""
分割"南海撞机烈士"全部音频（127句）
"""
import sqlite3
import os
import subprocess

db_path = "\\\\ll\\D\\xtrssvjj\\dpd.db"
audio_file = "\\\\ll\\d\\xtrssvjj\\南海撞机烈士王伟为何下落不明__历史__美国__事故.mp3"
output_dir = "nanhui_audio_full"

if not os.path.exists(output_dir):
    os.makedirs(output_dir)

conn = sqlite3.connect(db_path)
cursor = conn.cursor()

adid = 8334
cursor.execute("SELECT idx, start, end FROM srts WHERE adid = ? ORDER BY idx", (adid,))
subtitles = cursor.fetchall()

cmd = ["ffprobe", "-v", "error", "-show_entries", "format=duration", "-of", "default=noprint_wrappers=1:nokey=1", audio_file]
result = subprocess.run(cmd, capture_output=True, text=True)
total_duration = float(result.stdout.strip())

print(f"音频文件: {audio_file}")
print(f"音频总时长: {total_duration:.2f}秒")
print(f"字幕总数: {len(subtitles)}句")
print(f"\n开始分割音频...")

for i, (idx, start_ms, end_ms) in enumerate(subtitles):
    if idx == 0:
        seg_start = 0
    else:
        prev_end_ms = subtitles[i-1][2]
        seg_start = (prev_end_ms + start_ms) / 2000  # 间隔中点逻辑

    if i < len(subtitles) - 1:
        next_start_ms = subtitles[i+1][1]
        seg_end = (end_ms + next_start_ms) / 2000  # 间隔中点逻辑
    else:
        seg_end = total_duration

    output_path = os.path.join(output_dir, f"segment_{idx:03d}.mp3")
    
    ffmpeg_cmd = [
        "ffmpeg", "-y",
        "-i", audio_file,
        "-ss", str(seg_start),
        "-to", str(seg_end),
        "-acodec", "libmp3lame",
        "-ab", "128k",
        output_path
    ]
    
    result = subprocess.run(ffmpeg_cmd, capture_output=True)
    
    if idx % 50 == 0:
        print(f"  已分割 {idx}/{len(subtitles)}")

print(f"\n完成！保存路径: {output_dir}")
conn.close()
