🏠 Home 

Remove YouTube Shorts and Recommendation(by NOface312)

Working on Desktop & Mobile.


安装此脚本?
// SOURCE CODE      https://gitlab.com/f3714/remove_shorts
// ==UserScript==
// @name     	    Remove YouTube Shorts and Recommendation(by NOface312)
// @description	    Working on Desktop & Mobile.
// @version  	    2
// @grant    	    none
// @match    	    https://www.youtube.com/*
// @match    	    https://m.youtube.com/*
// @exclude 	    https://www.youtube.com/shorts/*
// @namespace       Remove YouTube Shorts automatically by pressing a button(by NOface312)
// @license         MIT
// @author          NOface312
// ==/UserScript==
// Set your config to change script
var config = {
short_redirect: true,
delete_recommendations: true,
remove_recomendations_on_main_page: false,
recommendations_list: [
"Рекомендации",
"Recommendations",
"Просмотренные видео",
"Другие видео, которые посмотрели зрители",
"Новые каналы для вас",
"Новые видео на канале",
],
mobile_interval: 500, //How often script launch
pc_interval: 1000 //How often script launch
}
//setInterval is not workin in mobile version((( So I had to write my own implementation
function mySetInterval(func, interval) {
setTimeout(function() {
func();
mySetInterval(func, interval);
}, interval);
}
function delShortsPC() {
if (window.location.href.includes('/shorts/') && config.short_redirect) {
window.location.replace('https://www.youtube.com/');
}
if ((window.location.href === "https://www.youtube.com/") && (config.remove_recomendations_on_main_page)) {
document.querySelectorAll("#contents.style-scope.ytd-rich-grid-renderer").forEach(element => {
element.remove();
})
}
//Delete Shorts in Youtube Subscribe
document.querySelectorAll('ytd-thumbnail-overlay-time-status-renderer[overlay-style="SHORTS"]').forEach(function (element) {
element.closest('ytd-grid-video-renderer') && element.closest('ytd-grid-video-renderer').remove();
});
//Delete Short link in channel menu
document.querySelectorAll('div.tab-title.style-scope.ytd-c4-tabbed-header-renderer').forEach(element => {
element.innerHTML === "Shorts" && element.closest('tp-yt-paper-tab').remove();
})
//Delete Short link in channel menu
document.querySelectorAll('ytd-mini-guide-entry-renderer[aria-label="Shorts"]').forEach(function (element) {
element.remove();
});
//Delete Short in search
document.querySelectorAll('ytd-thumbnail-overlay-time-status-renderer[overlay-style="SHORTS"]').forEach(function (element) {
element.closest('ytd-video-renderer') && element.closest('ytd-video-renderer').remove();
});
// Remove Youtube Recomendation in search
if (config.delete_recommendations){
document.querySelectorAll('span.style-scope.ytd-shelf-renderer').forEach(element => {
config.recommendations_list.includes(element.innerHTML) && element.closest('ytd-shelf-renderer') && element.closest('ytd-shelf-renderer').remove();
})
}
var elementToRemove = []
// Remove Youtube Recomendation in Main Page
elementToRemove.push(document.querySelector('ytd-reel-shelf-renderer'));
elementToRemove.push(document.querySelector('ytd-rich-section-renderer'));
elementToRemove.push(document.querySelector('ytd-reel-shelf-renderer'));
elementToRemove.push(document.querySelector('ytd-guide-entry-renderer a[title="Shorts"]:first-child'));
elementToRemove.forEach(function(element) {
element && element.remove();
});
}
function delShortsMobile() {
if (window.location.href.includes('/shorts/') && config.short_redirect) {
window.location.replace('https://m.youtube.com/');
}
document.querySelectorAll('ytm-thumbnail-overlay-time-status-renderer[data-style="SHORTS"]').forEach(function (element) {
element.closest('ytm-item-section-renderer') && element.closest('ytm-item-section-renderer').remove();
});
document.querySelectorAll('a.single-column-browse-r###lts-tab.center').forEach(element => {
element.innerHTML === "Shorts" && element.remove();
})
var elementToRemove = []
elementToRemove.push(document.querySelector('ytm-reel-shelf-renderer'));
elementToRemove.push(document.querySelector('ytm-rich-section-renderer'));
elementToRemove.push(document.querySelector('ytm-reel-shelf-renderer'));
elementToRemove.push(document.querySelector('ytm-guide-entry-renderer a[title="Shorts"]:first-child'));
elementToRemove.forEach(function(element) {
if (element) {
element.remove();
}
});
try {
document.querySelector('ytm-pivot-bar-item-renderer div.pivot-bar-item-tab.pivot-shorts').parentNode.remove();
} catch (error) {
// pass
}
}
function drawButton() {
const div = document.createElement('DIV');
div.id = 'dSDiv';
div.style.position = 'absolute';
div.style.zIndex = '99999';
const button = document.createElement('button');
button.innerText = 'Remove Shorts';
button.id = 'dSButton';
button.style.backgroundColor = 'red';
button.style.color = 'white';
button.style.border = 'none';
button.style.marginLeft = "-60px";
button.style.fontSize = '10px';
button.style.fontWeight = 'bold';
button.style.borderRadius = '8px';
button.style.cursor = 'pointer';
button.style.boxShadow = '0px 5px 10px rgba(0, 0, 0, 0.2)';
button.style.transition = 'transform 0.2s ease-in-out';
button.style.background = localStorage.getItem("dSButtonSettings");
button.addEventListener('mousedown', function() {
button.style.transform = 'translateY(2px)';
button.style.boxShadow = '0px 3px 6px rgba(0, 0, 0, 0.2)';
});
button.addEventListener('mouseup', function() {
button.style.transform = 'translateY(0)';
button.style.boxShadow = '0px 5px 10px rgba(0, 0, 0, 0.2)';
});
button.addEventListener('click', function () {
location.reload();
if (button.style.background == 'red' || button.style.background == 'red none repeat scroll 0% 0%') {
button.style.background = 'green';
localStorage.setItem("dSButtonSettings", "green");
delShortsInterval = setInterval(delShortsPC, config.pc_interval);
} else if (button.style.background == 'green' || button.style.background == 'green none repeat scroll 0% 0%') {
button.style.background = 'red';
localStorage.setItem("dSButtonSettings", "red");
clearInterval(delShortsInterval);
}
});
div.appendChild(button);
document.getElementById('center').appendChild(div);
}
//Main
//PC
if (!window.location.href.includes('m.youtube')) {
var delShortsInterval;
if (!localStorage.getItem("dSButtonSettings")) {
localStorage.setItem("dSButtonSettings", "red");
}
if (localStorage.getItem("dSButtonSettings") == 'green') {
delShortsInterval = setInterval(delShortsPC, config.pc_interval);
}
if (document.getElementById('center').children.length != 4) {
drawButton("Desktop");
}
// Mobile
} else {
mySetInterval(delShortsMobile, config.mobile_interval);
}