podcast-mindmap/scripts/download_audio.py

42 lines
1.2 KiB
Python
Raw Normal View History

#!/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()