您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
Automatically mute and hide YouTube ads and hide YouTube Ad Slots.
当前为
// ==UserScript== // @name FuckYoutubeAds - Mute and hide YouTube ads // @namespace http://tampermonkey.net/ // @version 1.4.2 // @description Automatically mute and hide YouTube ads and hide YouTube Ad Slots. // @author John Doe // @match *://www.youtube.com/* // @grant none // @license MIT // ==/UserScript== (function () { const messageDiv = document.createElement('div') function createMessage () { messageDiv.style.cssText = 'position: fixed; bottom: 10px; left: 10px; background: #0f0f0f; color: white; border: 1px solid white; padding: 8px; border-radius: 8px; z-index: 999;' messageDiv.textContent = 'Ad muted and blurred by FuckAds. Keep your mind ad-free. 🧠🕊️' } function hideAdsSlot () { /* ads on main feed */ const youTubeAdsSlot = document.querySelectorAll('ytd-display-ad-renderer') const youTubeAdsSlot2 = document.querySelectorAll('ytd-ad-inline-playback-meta-block') const youTubeAdsSlot5 = document.getElementsByClassName('ytd-in-feed-ad-layout-renderer') /* single sponsored container with a cta on /watch/ */ const youTubeAdsSlot3 = document.querySelector('#player-ads') /* ads slot on /watch feeds */ const youTubeAdsSlot4 = document.getElementsByClassName('ytp-ad-avatar-lockup-card') const youTubeAdsSlot6 = document.getElementsByTagName('ytd-ad-slot-renderer') /* big banner on top of feed to incentive to buy YouTube Premium (go fuck yourself) */ const youTubePremiumAdSlot = document.getElementsByTagName('ytd-banner-promo-renderer') if (youTubeAdsSlot || youTubeAdsSlot2) { for (let i = 0; i < youTubeAdsSlot.length; i++) { youTubeAdsSlot[i].innerText = 'Ads hidden by FuckAds. Keep your mind ad-free. 🧠🕊️' youTubeAdsSlot[i].style.height = '100%' youTubeAdsSlot[i].style.display = 'flex' youTubeAdsSlot[i].style.color = 'white' youTubeAdsSlot[i].style.justifyContent = 'center'; youTubeAdsSlot[i].style.alignItems = 'center'; } for (let i = 0; i < youTubeAdsSlot2.length; i++) { youTubeAdsSlot[i].innerText = 'Ads hidden by FuckAds. Keep your mind ad-free. 🧠🕊️' youTubeAdsSlot2[i].style.height = '100%' youTubeAdsSlot2[i].style.display = 'flex' youTubeAdsSlot2[i].style.color = 'white' youTubeAdsSlot2[i].style.justifyContent = 'center' youTubeAdsSlot2[i].style.alignItems = 'center' } } if (youTubeAdsSlot3) { youTubeAdsSlot3.style.display = 'none' } if (youTubeAdsSlot4) { for (let adSlot of youTubeAdsSlot4) { adSlot.style.display = 'none' } } if (youTubeAdsSlot5) { for (let adSlot of youTubeAdsSlot5) { adSlot.style.display = 'none' } } if (youTubeAdsSlot6) { for (let adSlot of youTubeAdsSlot6) { adSlot.style.display = 'none' } } if (youTubePremiumAdSlot) { for (let adSlot of youTubePremiumAdSlot) { adSlot.style.display = 'none' } } } setInterval(hideAdsSlot, 3000) function startObserving () { if (location.href.includes('/watch')) { const player = document.getElementById('movie_player') const innerPlayer = document.querySelector('.html5-video-container') const skipButton = document.querySelector('.ytp-ad-skip-button') || document.querySelector('.ytp-skip-ad-button') || document.querySelector('.ytp-ad-skip-button-modern') if (player.classList.contains('ad-showing')) { console.log('Ad detected.') document.body.appendChild(messageDiv) innerPlayer.style.filter = 'blur(45px)' player.mute() createMessage() } if (!player.classList.contains('ad-showing')) { console.log('No ad detected') player.style.opacity = 1 player.unMute() innerPlayer.style.filter = 'blur(0)' messageDiv.style.zIndex = '-999' } if (skipButton) { console.log('skip button detected', skipButton) skipButton.click() } } } setInterval(startObserving, 2000) })()