feat: use yt-dlp as primary transcript fetcher, fallback to youtube-transcript-api

- Add _ytdlp_transcript() — fetch transcripts via yt-dlp Python API
  (supports json3/srv3/vtt/srt subtitle formats, cookies.txt auth)
- Add _parse_subtitles() — parse subtitle formats into plain text
- Keep _yttranscript_api_transcript() as fallback
- download_transcript() tries yt-dlp first, then youtube-transcript-api
- Add yt-dlp to requirements.txt
- Update tests to mock both paths (all 23 pass)
- Document Google Data API v3 caption limitations in architecture.md
  (captions.list works, captions.download=403 for non-owned videos)
This commit is contained in:
Gan, Jimmy
2026-07-12 01:36:53 +08:00
parent fd16217076
commit f1ada7d277
4 changed files with 147 additions and 11 deletions
+1
View File
@@ -1,6 +1,7 @@
fastapi>=0.100.0
uvicorn>=0.20.0
youtube-transcript-api>=0.6.0
yt-dlp>=2025.0.0
aiosqlite>=0.18.0
httpx>=0.24.0
pytest>=7.0.0