import os
import argparse
import whisper
from dotenv import load_dotenv

try:
    # moviepy v2+
    from moviepy import VideoFileClip
except ImportError:
    # moviepy v1 互換
    import importlib
    VideoFileClip = importlib.import_module("moviepy.editor").VideoFileClip


load_dotenv()

parser = argparse.ArgumentParser(description="動画ファイルを文字起こしします。")
parser.add_argument("video_filename", help="動画ファイル名を指定してください。")
args = parser.parse_args()

video_folder = os.getenv("VIDEO_FOLDER")
audio_folder = os.getenv("AUDIO_FOLDER")

if not video_folder or not audio_folder:
    raise ValueError("VIDEO_FOLDER と AUDIO_FOLDER を .env に設定してください。")

video_path = os.path.join(video_folder, args.video_filename)

if not os.path.exists(video_path):
    raise FileNotFoundError(f"動画ファイルが見つかりません: {video_path}")

os.makedirs(audio_folder, exist_ok=True)
output_audio_path = os.path.join(audio_folder, "temp_audio.mp3")

# Extract audio from the video
video = VideoFileClip(video_path)
video.audio.write_audiofile(output_audio_path)

# Load the Whisper ASR model
model = whisper.load_model("small")

# Transcribe the extracted audio
result = model.transcribe(output_audio_path)
print(result["text"])

# Remove the temporary audio file
os.remove(output_audio_path)
