From 655246634f4aac712c2cc26c8abc1bc29001e3d8 Mon Sep 17 00:00:00 2001
From: Kelvin <kelvin@futo.org>
Date: Mon, 10 Feb 2025 22:28:47 +0100
Subject: [PATCH] Filter member only videos

---
 YoutubeConfig.json         |  2 +-
 YoutubeScript.js           | 16 +++++++++++++---
 YoutubeUnstableConfig.json |  2 +-
 3 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/YoutubeConfig.json b/YoutubeConfig.json
index d40f918..f2a6f09 100644
--- a/YoutubeConfig.json
+++ b/YoutubeConfig.json
@@ -8,7 +8,7 @@
 	"repositoryUrl": "https://futo.org",
 	"scriptUrl": "./YoutubeScript.js",
 
-	"version": 233,
+	"version": 234,
 	"iconUrl": "./youtube.png",
 	"id": "35ae969a-a7db-11ed-afa1-0242ac120002",
 	
diff --git a/YoutubeScript.js b/YoutubeScript.js
index b9845a9..4d8a26e 100644
--- a/YoutubeScript.js
+++ b/YoutubeScript.js
@@ -4033,7 +4033,7 @@ function extractVideoPage_VideoDetails(parentUrl, initialData, initialPlayerData
 			url: initialPlayerData?.streamingData?.dashManifestUrl
 		}) : null;
 
-	const abrStreamingUrl = (initialPlayerData.streamingData.serverAbrStreamingUrl) ? 
+	const abrStreamingUrl = (initialPlayerData?.streamingData?.serverAbrStreamingUrl) ? 
 		decryptUrlN(initialPlayerData.streamingData.serverAbrStreamingUrl, jsUrl, false) : undefined;
 	useAbr = abrStreamingUrl && (!!useAbr || USE_ABR_VIDEOS);
 	const video = {
@@ -4979,12 +4979,17 @@ function extractRichItemRenderer_Video(itemRenderer, contextData) {
 	return switchKeyVideo(content, contextData); 
 }
 function extractVideoWithContextRenderer_Video(videoRenderer, contextData) {
-
 	const liveBadges = videoRenderer.thumbnailOverlays?.filter(x=>
 		x.thumbnailOverlayTimeStatusRenderer?.style == "LIVE" ||
 		x.thumbnailOverlayTimeStatusRenderer?.accessibility?.accessibilityData?.label == "LIVE");
 	let isLive = liveBadges != null && liveBadges.length > 0;
 
+	const isMemberOnly = !!videoRenderer.badges?.find(x=>x?.metadataBadgeRenderer?.label == "Members only");
+	if(isMemberOnly) {
+		log("MEMBER ONLY VIDEO IGNORED");
+		return null;
+	}
+
 	isLive = isLive || ((videoRenderer.badges?.filter(x=>x.metadataBadgeRenderer?.style == "BADGE_STYLE_TYPE_LIVE_NOW")?.length ?? 0) > 0)
 
 	let plannedDate = null;
@@ -5040,7 +5045,6 @@ function extractVideoWithContextRenderer_Video(videoRenderer, contextData) {
 	}
 }
 function extractVideoRenderer_Video(videoRenderer, contextData) {
-
 	const liveBadges = videoRenderer.badges?.filter(x=>x.metadataBadgeRenderer?.label == "LIVE");
 	const liveOverlays = videoRenderer.thumbnailOverlays?.filter(x=>
 		x.thumbnailOverlayTimeStatusRenderer?.style == "LIVE" ||
@@ -5048,6 +5052,12 @@ function extractVideoRenderer_Video(videoRenderer, contextData) {
 	let isLive = (liveBadges != null && liveBadges.length > 0) ||
 		(liveOverlays != null && liveOverlays.length > 0);
 
+	const isMemberOnly = !!videoRenderer.badges?.find(x=>x.metadataBadgeRenderer?.label == "Members only");
+	if(isMemberOnly) {
+		log("MEMBER ONLY VIDEO IGNORED");
+		return null;
+	}
+
 	let plannedDate = null;
 	if(videoRenderer.upcomingEventData?.startTime)
 		plannedDate = parseInt(videoRenderer.upcomingEventData.startTime);
diff --git a/YoutubeUnstableConfig.json b/YoutubeUnstableConfig.json
index 59e8c1d..bb7580b 100644
--- a/YoutubeUnstableConfig.json
+++ b/YoutubeUnstableConfig.json
@@ -8,7 +8,7 @@
 	"repositoryUrl": "https://futo.org",
 	"scriptUrl": "./YoutubeScript.js",
 
-	"version": 233,
+	"version": 234,
 	"iconUrl": "./youtube.png",
 	"id": "35ae969a-a7db-11ed-afa1-0242ac120003",
 	
-- 
GitLab