#!/usr/bin/env python3
"""
Wrapper for whisper that validates audio file first.
If validation fails, outputs error and exits.
"""

import json
import os
import subprocess
import sys
import time

MAX_FILE_AGE_SECONDS = 300  # 5 minutes

def validate_audio(file_path):
    """Validate audio file before transcription."""
    if not os.path.exists(file_path):
        return False, "file_not_found"
    
    file_size = os.path.getsize(file_path)
    if file_size == 0:
        return False, "file_empty"
    
    if file_size < 1000:
        return False, "file_too_small"
    
    file_mtime = os.path.getmtime(file_path)
    file_age = time.time() - file_mtime
    
    if file_age > MAX_FILE_AGE_SECONDS:
        return False, "file_stale"
    
    return True, None

def main():
    if len(sys.argv) < 2:
        print(json.dumps({"error": "no_file_path", "message": "网络不稳定，请重试。"}))
        sys.exit(1)
    
    audio_file = sys.argv[1]
    
    # Validate first
    valid, error = validate_audio(audio_file)
    if not valid:
        error_messages = {
            "file_not_found": "抱歉，音频文件没找到，网络不稳定，请重试。",
            "file_empty": "抱歉，音频文件是空的，网络不稳定，请重试。",
            "file_too_small": "抱歉，音频文件不完整，网络不稳定，请重试。",
            "file_stale": "抱歉，音频文件已过期，网络不稳定，请重试。",
        }
        message = error_messages.get(error, "网络不稳定，请重试。")
        print(json.dumps({"error": error, "message": message}))
        sys.exit(1)
    
    # If valid, run actual whisper (pass all args)
    result = subprocess.run(
        [sys.executable, "/Users/cx/.openclaw/workspace/skills/voice-tts/scripts/whisper"] + sys.argv[1:],
        capture_output=False
    )
    sys.exit(result.returncode)

if __name__ == "__main__":
    main()
