#!/usr/bin/env python3
"""
分割"牛津大学AI"音频前10句
"""
import sqlite3
import os
import subprocess

db_path = "\\\\ll\\D\\xtrssvjj\\dpd.db"
audio_file = "\\\\ll\\d\\xtrssvjj\\分享一个牛津大学的学生是如何用AI的_不是让AI替你思考_而是用AI逼你更深地思考.mp3"
output_dir = "oxford_audio_10"

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

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

adid = 8237
cursor.execute("SELECT idx, start, end FROM srts WHERE adid = ? ORDER BY idx LIMIT 11", (adid,))  # 查询11条获取N+1
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[:10]):  # 只处理前10句
    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)
    print(f"  已分割 {idx}/{9}")

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