GhiVideo 소스 복제 — v4 작업 시작 기준
기존 GhiVideo 저장소 HEAD의 트래킹 소스 362개 파일을 복제. (node_modules·storage·빌드 산출물·대용량 미디어는 .gitignore 규칙대로 제외) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
# AI Video Brief — 자막 다운로드 429 오류 시 요약 실패 문제 수정
|
||||
|
||||
**소요 시간**: 6분
|
||||
**Context 사용량**: input 650k / output 45k tokens (추정값)
|
||||
|
||||
## 문제
|
||||
|
||||
요약 버튼 클릭 시 `ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests` 로 작업 전체가 실패.
|
||||
|
||||
- 원인 1: 유튜브가 자막을 자주 요청하는 IP를 일시 차단(429). 기존 코드는 언어 4개(ko/ko-KR/en/en-US)의 수동+자동 자막을 한꺼번에 요청해서 차단에 걸리기 쉬웠음.
|
||||
- 원인 2: 자막 다운로드 예외가 그대로 전파되어, Whisper 음성인식 폴백이 있는데도 작업이 죽음.
|
||||
|
||||
## 수정 (`ai_video_brief`)
|
||||
|
||||
`app/services/downloader.py` — `fetch_subtitles()` 재작성:
|
||||
1. 자막 **목록만 먼저 조회**(다운로드 아님) → 우선순위에 맞는 언어 **딱 1개만** 선택해 다운로드 (요청 수 최소화, `sleep_interval_subtitles: 1` 추가)
|
||||
2. 함수 전체를 try/except로 감싸 **어떤 오류든 None 반환** → 호출부(main.py)가 자동으로 Whisper 음성인식으로 진행
|
||||
3. 수동 자막 우선, 없으면 자동 생성 자막 (기존 우선순위 유지)
|
||||
|
||||
`app/main.py` — 진행 메시지를 "자막을 못 가져와 소리를 내려받는 중 (음성인식으로 진행)"으로 명확화.
|
||||
|
||||
## 테스트
|
||||
|
||||
- ✅ 강제 재요약(force) 전 과정 통과: 자막 1개 선택 다운로드 → 요약 완료 (16초)
|
||||
- ✅ 예외 시 None 폴백 경로는 코드 보장 (Whisper 경로는 이전 세션에서 검증 완료)
|
||||
|
||||
## 다음 에이전트 참고
|
||||
|
||||
- 429는 시간이 지나면 자동으로 풀림. 앞으로 자막 실패는 사용자에게 오류로 보이지 않고 음성인식으로 조용히 전환됨 (원문 출처 표시로 구분 가능: "자막" vs "음성인식(Whisper)").
|
||||
Reference in New Issue
Block a user