From 81d71bd761cd50b9bc3373a40ebef84505aa4882 Mon Sep 17 00:00:00 2001 From: ayrisdev Date: Sun, 30 Aug 2026 16:02:03 +0300 Subject: [PATCH] fix: yt-dlp android player_client ile bot-tespitini azalt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit AyrisTech kanalı gerçekten canlıydı ama Coolify sunucusunun IP'si YouTube'un "Sign in to confirm you're not a bot" duvarına takıldı (bu ortamdan aynı komut sorunsuz çalıştı — IP itibarına bağlı). Hem live-check hem capture çağrısına --extractor-args "youtube:player_client=android" eklendi; bu client genelde aynı PO-token doğrulamasına tabi değil. Co-Authored-By: Claude Sonnet 5 --- apps/api-daemon/src/capture/streamIngest.ts | 8 +++++--- apps/api-daemon/src/youtubePolling.ts | 8 +++++++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/apps/api-daemon/src/capture/streamIngest.ts b/apps/api-daemon/src/capture/streamIngest.ts index 5c73632..bf1ca15 100644 --- a/apps/api-daemon/src/capture/streamIngest.ts +++ b/apps/api-daemon/src/capture/streamIngest.ts @@ -71,9 +71,11 @@ async function runCapture(job: Job): Promise { console.log(`[stream-ingest] starting capture for session ${sessionId}: ${youtubeUrl}`); - const ytdlp = spawn("yt-dlp", ["-f", "best", "-o", "-", youtubeUrl], { - stdio: ["ignore", "pipe", "pipe"], - }); + const ytdlp = spawn( + "yt-dlp", + ["--extractor-args", "youtube:player_client=android", "-f", "best", "-o", "-", youtubeUrl], + { stdio: ["ignore", "pipe", "pipe"] }, + ); const ffmpeg = spawn( "ffmpeg", diff --git a/apps/api-daemon/src/youtubePolling.ts b/apps/api-daemon/src/youtubePolling.ts index 6ad6c12..1f401f2 100644 --- a/apps/api-daemon/src/youtubePolling.ts +++ b/apps/api-daemon/src/youtubePolling.ts @@ -28,7 +28,13 @@ async function findLiveVideoId(channelId: string): Promise { try { const { stdout } = await execFileAsync( "yt-dlp", - ["--simulate", "--no-warnings", "--print", "%(id)s", liveUrl], + [ + "--simulate", + "--no-warnings", + "--extractor-args", "youtube:player_client=android", + "--print", "%(id)s", + liveUrl, + ], { timeout: 20_000 }, ); lastPollErrors.delete(channelId);