Last active
November 27, 2021 13:55
-
-
Save Antoine-dh/ca211b44781ce6111badab041d6b5baa to your computer and use it in GitHub Desktop.
Greasemonkey script to remove Youtube recommandations in the sidebar and video player (2018)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name Youtube remove recommendations | |
// @description removes youtube recommendations in sidebar and end of video | |
// @author antoine-dh | |
// @include *.youtube.com/watch* | |
// @include *.youtube.*/watch* | |
// @version 1.1 | |
// ==/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(); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment