From 51af4464e84616c43d87ffa197eaac3e4eea9950 Mon Sep 17 00:00:00 2001 From: claude-bot Date: Mon, 20 Jul 2026 16:32:21 +0900 Subject: [PATCH] =?UTF-8?q?fix(rp):=20yt-dlp=20403(Forbidden)=20=EA=B0=84?= =?UTF-8?q?=ED=97=90=20=EC=8B=A4=ED=8C=A8=EC=97=90=20=EB=82=B4=EB=B6=80=20?= =?UTF-8?q?=EC=9E=AC=EC=8B=9C=EB=8F=84=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 증상: 첫 곡은 정상인데 두 번째 곡부터 "HTTP Error 403: Forbidden — unable to download video data" 로 노래 다운로드 실패(재시도하면 됨). 유튜브가 미디어 스트림에 간헐적 403 을 주는 케이스. - yt-dlp 인자에 --retries 10 / --fragment-retries 10 / --extractor-retries 3 / --retry-sleep http:exp=1:30 / --socket-timeout 30 추가 → yt-dlp 가 스스로 재시도·재추출해 한 번의 403 으로 곡이 실패하지 않게 함. - 인자 유효성은 실제 yt-dlp 로 파싱 검증. 0.4.11→0.4.12. Co-Authored-By: Claude Opus 4.7 --- package.json | 2 +- src/installer-rp/music.ts | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 1bda7ce..2127731 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "minecraft-music-quiz-installer", - "version": "0.4.11", + "version": "0.4.12", "description": "마인크래프트 음악퀴즈 간편설치기 + 관리 사이트", "main": "dist/installer/main.js", "scripts": { diff --git a/src/installer-rp/music.ts b/src/installer-rp/music.ts index 0912553..e52c8a6 100644 --- a/src/installer-rp/music.ts +++ b/src/installer-rp/music.ts @@ -38,6 +38,14 @@ export function downloadMusicTrack(opts: DownloadMusicOptions): Promise // 단일 파일이 아니라 HLS/DASH fragmented 스트림일 때 청크를 병렬로. // 일반 progressive 다운로드에는 영향 없음. '--concurrent-fragments', '5', + // 유튜브가 미디어 스트림에 간헐적으로 403(Forbidden) 을 준다(특히 두 번째 곡부터 + // throttle/클라이언트 이슈). yt-dlp 가 스스로 재시도·재추출하도록 해서 한 번의 + // 403 으로 곡 전체가 실패하지 않게 한다. + '--retries', '10', + '--fragment-retries', '10', + '--extractor-retries', '3', + '--retry-sleep', 'http:exp=1:30', + '--socket-timeout', '30', // 진행률 표시 안정화 (yt-dlp 가 \r 대신 새 줄로 출력). '--newline', '--extract-audio',