您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
removes youtube recommendations in sidebar and end of video
// ==UserScript== // @name Youtube: remove sidebar recommendations 2018 edition // @description removes youtube recommendations in sidebar and end of video // @author antoine-dh // @include *.youtube.com/watch* // @include *.youtube.*/watch* // @version 1.1 // @namespace https://greasyfork.org/users/214944 // ==/UserScript== // TODO: add more locales const searchStrings = [ 'Recommandée pour vous', // fr-FR 'Recommandé pour vous', // fr-CA 'Recommended for you', // en-US/UK 'Empfohlenes Video', // de-DE 'Recomendado para ti', // es-ES/US 'Recomendado para si', // pt-PT 'Recomendado', // pt-BR 'Consigliato per te', // it-IT ]; function removeSideElement(element) { if (element.getElementsByClassName('style-scope ytd-badge-supported-renderer').length !== 0) { // if it as the "New" badge element.remove(); return; } for (let i of element.getElementsByClassName('style-scope ytd-video-meta-block')) { for (let str of searchStrings) { if (i.textContent.includes(str)) { element.remove(); return; } } } } function removeShit() { for (let i of document.getElementsByClassName('ytp-endscreen-content')) { // removes all suggestions at the video end i.remove(); } for (let i of document.getElementsByClassName('ytp-upnext ytp-suggestion-set')) { // removes next autoplay video i.remove(); } for (let i of document.getElementsByTagName('ytd-compact-video-renderer')) { // removes sidebar recommendations removeSideElement(i); } } // from https://stackoverflow.com/a/14570614 const observeDOM = (function () { const MutationObserver = window.MutationObserver || window.WebKitMutationObserver; return function (obj, callback) { if (!obj || !obj.nodeType === true) { return; } if (MutationObserver) { const obs = new MutationObserver(function (mutations) { if (mutations[0].addedNodes.length) callback(mutations[0]); }); obs.observe(obj, {childList: true, subtree: true}); } else if (window.addEventListener) { obj.addEventListener('DOMNodeInserted', callback, false); } } })(); observeDOM(document, () => { removeShit(); });