#!/usr/bin/env python3 """Download audio from YouTube for all episodes in a project.""" import os import subprocess import sys from config import load_project def main(): project_dir = sys.argv[1] if len(sys.argv) > 1 else "." config = load_project(project_dir) audio_dir = config["_audio_dir"] os.makedirs(audio_dir, exist_ok=True) for ep in config["episodes"]: if "youtube" not in ep: print(f"SKIP: {ep['id']} — no YouTube ID") continue audio_file = config["_audio_files"][ep["id"]] output_path = os.path.join(audio_dir, audio_file) if os.path.exists(output_path): print(f"EXISTS: {audio_file}") continue print(f"DOWNLOAD: {ep['id']} ({ep['youtube']}) → {audio_file}") slug = config["_srt_keys"][ep["id"]] subprocess.run([ "yt-dlp", "--force-overwrites", "-x", "--audio-format", "m4a", "--audio-quality", "0", "-o", os.path.join(audio_dir, slug + ".%(ext)s"), f"https://www.youtube.com/watch?v={ep['youtube']}" ], check=True) print(f"\nDone. Audio files in {audio_dir}") if __name__ == "__main__": main()