#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
调试视频生成过程
"""

import os
import re
import subprocess


def get_audio_duration(audio_path):
    """
    获取音频文件时长（秒）
    """
    try:
        cmd = [
            "ffprobe",
            "-v", "quiet",
            "-show_entries", "format=duration",
            "-of", "default=noprint_wrappers=1:nokey=1",
            audio_path
        ]
        
        result = subprocess.run(cmd, capture_output=True, text=True, encoding='utf-8', errors='ignore')
        if result.returncode == 0:
            try:
                duration = float(result.stdout.strip())
                return duration
            except:
                return 0
        else:
            return 0
    except Exception as e:
        return 0


def get_video_duration(video_path):
    """
    获取视频文件时长（秒）
    """
    try:
        cmd = [
            "ffprobe",
            "-v", "quiet",
            "-show_entries", "format=duration",
            "-of", "default=noprint_wrappers=1:nokey=1",
            video_path
        ]
        
        result = subprocess.run(cmd, capture_output=True, text=True, encoding='utf-8', errors='ignore')
        if result.returncode == 0:
            try:
                duration = float(result.stdout.strip())
                return duration
            except:
                return 0
        else:
            return 0
    except Exception as e:
        return 0


def debug_video_generation():
    """
    调试视频生成过程
    """
    # 获取音频文件
    audio_dir = "我们需要知识分子吗_思考_segments"
    audio_files = []
    for filename in os.listdir(audio_dir):
        if filename.endswith('.mp3') and filename.startswith('seg'):
            match = re.match(r'seg(\d+)-', filename)
            if match:
                idx = int(match.group(1))
                audio_files.append((idx, os.path.join(audio_dir, filename)))
    
    audio_files.sort(key=lambda x: x[0])
    
    # 获取视频文件
    video_dir = "我们需要知识分子吗_思考_videos"
    video_files = []
    for filename in os.listdir(video_dir):
        if filename.endswith('.mp4') and filename.startswith('video_'):
            match = re.match(r'video_(\d+)\.mp4', filename)
            if match:
                idx = int(match.group(1))
                video_files.append((idx, os.path.join(video_dir, filename)))
    
    video_files.sort(key=lambda x: x[0])
    
    print("前10个音频和视频的对应关系:")
    for i in range(min(10, len(audio_files), len(video_files))):
        audio_idx, audio_path = audio_files[i]
        video_idx, video_path = video_files[i]
        
        audio_duration = get_audio_duration(audio_path)
        video_duration = get_video_duration(video_path)
        
        print(f"\n索引 {i}:")
        print(f"  音频: {os.path.basename(audio_path)} ({audio_duration:.2f}秒)")
        print(f"  视频: {os.path.basename(video_path)} ({video_duration:.2f}秒)")
        
        if abs(audio_duration - video_duration) < 0.1:
            print(f"  ✓ 匹配")
        else:
            print(f"  ✗ 不匹配")


if __name__ == "__main__":
    debug_video_generation()
