From 1336f7822b7f1285cf7fd4a5bebffeb3c18902f2 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 2 Jul 2025 20:26:16 +1000 Subject: [PATCH 1/2] Remove shorts, improved --- goodtube.js | 39 +++++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/goodtube.js b/goodtube.js index f3a7c1e..d6ee900 100644 --- a/goodtube.js +++ b/goodtube.js @@ -167,8 +167,9 @@ /* Youtube functions ------------------------------------------------------------------------------------------ */ - // Hide ads, shorts, etc using CSS + // Hide ads and shorts function goodTube_youtube_hideAdsShortsEtc() { + // Hide ads let style = document.createElement('style'); style.textContent = ` .ytd-search ytd-shelf-renderer, @@ -241,36 +242,36 @@ `; document.head.appendChild(style); + // Debug message + console.log('[GoodTube] Ads removed'); + + // Hide shorts if they're not enabled if (goodTube_shorts === 'false') { let shortsStyle = document.createElement('style'); shortsStyle.textContent = ` ytm-pivot-bar-item-renderer:has(> .pivot-shorts), - ytd-rich-section-renderer { + ytd-rich-section-renderer, + grid-shelf-view-model { display: none !important; } `; document.head.appendChild(shortsStyle); - } - // Debug message - console.log('[GoodTube] Ads removed'); + // Debug message + console.log('[GoodTube] Shorts removed'); + } } - // Hide shorts (realtime) + // Hide shorts (real time) function goodTube_youtube_hideShorts() { // Don't do this if shorts are enabled if (goodTube_shorts === 'true') { return; } - // If we're on a channel page, don't hide shorts - if (window.location.href.indexOf('@') !== -1) { - return; - } - // Hide shorts links - let shortsLinks = document.querySelectorAll('a:not(.goodTube_hidden)'); + let shortsLinks = document.querySelectorAll('a:not(.goodTube_hidden):not(.goodTube_checked)'); shortsLinks.forEach((element) => { if (element.href.indexOf('shorts/') !== -1) { goodTube_helper_hideElement(element); @@ -278,6 +279,20 @@ goodTube_helper_hideElement(element.closest('ytd-compact-video-renderer')); goodTube_helper_hideElement(element.closest('ytd-rich-grid-media')); } + + // Mark this element as checked to save on resources + element.classList.add('goodTube_checked'); + }); + + // Hide shorts buttons + let shortsButtons = document.querySelectorAll('yt-chip-cloud-chip-renderer:not(.goodTube_hidden):not(.goodTube_checked), yt-tab-shape:not(.goodTube_hidden):not(.goodTube_checked)'); + shortsButtons.forEach((element) => { + if (element.innerHTML.toLowerCase().indexOf('shorts') !== -1) { + goodTube_helper_hideElement(element); + } + + // Mark this element as checked to save on resources + element.classList.add('goodTube_checked'); }); } From 3f31e7ac22c6bf5e8a02f88cb050cd6881004f70 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 2 Jul 2025 20:44:58 +1000 Subject: [PATCH 2/2] Tidy --- goodtube.js | 39 +++++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/goodtube.js b/goodtube.js index d6ee900..db9fa35 100644 --- a/goodtube.js +++ b/goodtube.js @@ -136,7 +136,28 @@ // Are we in picture in picture? let goodTube_pip = false; - // Are shorts enabled + // Are we syncing the main Youtube player? + let goodTube_syncingPlayer = false; + + // A reference to the previous URL (used to detect when the page changes) + let goodTube_previousUrl = false; + + // Have we already turned off Youtube's default autoplay? + let goodTube_turnedOffAutoplay = false; + + // Have we already redirected away from a short? + let goodTube_redirectHappened = false; + + // Is this the first video we're loading? + let goodTube_firstLoad = false; + + // A reference to a global timeout to check if our player has loaded + let goodTube_loadTimeout = setTimeout(() => {}, 0); + + // Has the prox iframe loaded? + let goodTube_proxyIframeLoaded = false; + + // Are shorts enabled? let goodTube_shorts = 'false'; if (window.top === window.self) { goodTube_shorts = goodTube_helper_getCookie('goodTube_shorts'); @@ -161,7 +182,7 @@ goodTube_playbackSpeed = '1'; } - // Stores the GET params + // Fetch the GET params let goodTube_getParams = goodTube_helper_setupGetParams(); @@ -320,13 +341,13 @@ } // Hide all Youtube players - let goodTube_redirectHappened = false; function goodTube_youtube_hidePlayers() { - // Don't do this if shorts are enabled + // Don't do this if shorts are enabled and we're viewing a short if (goodTube_shorts === 'true' && window.location.href.indexOf('/shorts') !== -1) { return; } + // Redirect from any short to the homepage if (window.location.href.indexOf('/shorts') !== -1 && !goodTube_redirectHappened) { window.location.href = 'https://youtube.com'; goodTube_redirectHappened = true; @@ -351,10 +372,9 @@ }); } - // Mute, pause and skip ads on all Youtube videos - let goodTube_syncingPlayer = false; + // Mute and pause all Youtube videos function goodTube_youtube_mutePauseSkipAds() { - // Don't do this if shorts are enabled + // Don't do this if shorts are enabled and we're viewing a short if (goodTube_shorts === 'true' && window.location.href.indexOf('/shorts') !== -1) { return; } @@ -382,7 +402,6 @@ /* Player functions ------------------------------------------------------------------------------------------ */ // Init player - let goodTube_proxyIframeLoaded = false; function goodTube_player_init() { // Get the page API goodTube_page_api = document.getElementById('movie_player'); @@ -456,7 +475,6 @@ } // Position and size the player - let goodTube_loadTimeout = setTimeout(() => {}, 0); function goodTube_player_positionAndSize() { // If we're viewing a video if (window.location.href.indexOf('.com/watch') !== -1) { @@ -501,7 +519,6 @@ } // Load a video - let goodTube_firstLoad = false; function goodTube_player_load() { // Pause the video first (this helps to prevent audio flashes) goodTube_player_pause(); @@ -1097,7 +1114,6 @@ } // Actions - let goodTube_previousUrl = false; function goodTube_actions() { // Get the previous and current URL @@ -1707,7 +1723,6 @@ } // Turn off autoplay - let goodTube_turnedOffAutoplay = false; function goodTube_youtube_turnOffAutoplay() { // If we've already turned off autoplay, just return if (goodTube_turnedOffAutoplay) {