From b1ec2bcd2bf3e4d4bd72534fe8e7c1f5ae64ab11 Mon Sep 17 00:00:00 2001 From: LukeGus Date: Sun, 21 Jun 2026 16:17:18 -0500 Subject: [PATCH] fix: skip YouTube publish if video is already public --- scripts/publish-youtube.cjs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/scripts/publish-youtube.cjs b/scripts/publish-youtube.cjs index 5f6cfe32..22ab28fa 100644 --- a/scripts/publish-youtube.cjs +++ b/scripts/publish-youtube.cjs @@ -45,7 +45,22 @@ async function getAccessToken({ clientId, clientSecret, refreshToken }) { return json.access_token; } +async function getVideoStatus(accessToken, videoId) { + const res = await fetch( + `https://www.googleapis.com/youtube/v3/videos?part=status&id=${videoId}`, + { headers: { Authorization: `Bearer ${accessToken}` } }, + ); + if (!res.ok) throw new Error(`videos.list failed (${res.status}): ${await res.text()}`); + const json = await res.json(); + return json.items?.[0]?.status?.privacyStatus ?? null; +} + async function setVideoPublic(accessToken, videoId) { + const status = await getVideoStatus(accessToken, videoId); + if (status === "public") { + console.log(`Video ${videoId} is already public, skipping.`); + return; + } const res = await fetch( "https://www.googleapis.com/youtube/v3/videos?part=status", {