feat(youtube): opt-in audio fallback for videos without a transcript

JO
3d ago
+407-5

Refs #61.

When neither youtube-transcript-api nor pytubefix gets a transcript (no captions, or YouTube blocks every request), extraction raises. This adds youtube_audio_fallback (CCORE_YOUTUBE_AUDIO_FALLBACK), off by default: set to apify with APIFY_API_TOKEN, it downloads the audio with the johnvc/youtube-download-api Actor and runs it through the existing transcribe_audio, so the host needs neither yt-dlp nor Deno. A missing token raises ConfigurationError and a failed download raises ExternalServiceError. Unit tests cover the off, on, no-token and failed-run cases, and I ran the helper against live Actor output for pBy1zgt0XPc.