NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name YouTube Restrict (Block Clips And Suggestions)
// @namespace http://www.youtube.com/
// @version 1.0.5
// @description Restrict YouTube videos down to containing keywords from the 'safe' list
// @author SergejVolkov
// @match http://www.youtube.com/*
// @match https://www.youtube.com/*
// @license MIT
// @grant none
// ==/UserScript==
// Allowed keywords should either be in a video title or a channel name.
// Otherwise, the content will be blocked.
// For example,
var keywords = ['Music', 'City Pop', 'Jazz', 'Lecture', 'Math', 'Calculus'];
function BlockClip() {
var channel_name = document.querySelector('ytd-channel-name.ytd-video-owner-renderer a').textContent.toLowerCase();
var i;
var doc_title = document.title.toLowerCase();
for (i = 0; i < keywords.length; i++) {
if (doc_title.includes(keywords[i]) || channel_name.includes(keywords[i])) {
return;
}
}
if (document.querySelector('ytd-player .html5-video-player.playing-mode') != null) {
document.querySelector('ytd-player .html5-video-player .ytp-play-button').click();
}
var style = document.createElement('style');
style.innerHTML = '/* ytd-player { display: none; } */ ytd-watch-next-secondary-results-renderer { visibility: hidden; } ytd-comment-thread-renderer, yt-formatted-string.ytd-video-primary-info-renderer span, video.html5-main-video { display: none; } #related.style-scope.ytd-watch-flexy, ytd-watch-flexy[flexy] #player-container.ytd-watch-flexy {color: var(--yt-spec-text-primary); text-align: center; font-size: 20px; padding-top: 20px; }';
document.head.appendChild(style);
document.querySelector('ytd-watch-flexy[flexy] #player-container.ytd-watch-flexy').textContent = 'Video Blocked';
document.querySelector('#related.style-scope.ytd-watch-flexy').textContent = 'Playlist Blocked';
var titles = document.querySelectorAll('yt-formatted-string.ytd-video-primary-info-renderer');
titles[1].textContent = 'Unfortunately, Your Provider Has Blocked This Clip';
}
function BlockMainPage() {
var style = document.createElement('style');
style.innerHTML = '#contents.ytd-rich-grid-renderer { display: none; } ytd-rich-grid-renderer {color: var(--yt-spec-text-primary); text-align: center; font-size: 20px; padding-top: 20px; }';
document.head.appendChild(style);
document.querySelector('ytd-rich-grid-renderer').textContent = 'Suggestions Blocked';
}
function BlockChannel() {
var i;
var doc_title = document.title.toLowerCase();
for (i = 0; i < keywords.length; i++) {
if (doc_title.includes(keywords[i])) {
return;
}
}
if (document.querySelector('ytd-player .html5-video-player.playing-mode') != null) {
document.querySelector('ytd-player .html5-video-player .ytp-play-button').click();
}
var style = document.createElement('style');
style.innerHTML = '#contents.ytd-section-list-renderer, #channel-header-container yt-formatted-string.ytd-channel-name span { display: none; } ytd-section-list-renderer {color: var(--yt-spec-text-primary); text-align: center; font-size: 20px; padding-top: 20px; }';
document.head.appendChild(style);
document.querySelector('#channel-header-container yt-formatted-string.ytd-channel-name').textContent = 'Content Blocked';
document.querySelector('ytd-section-list-renderer').textContent = 'Unfortunately, your provider has blocked this channel';
}
function Restrict() {
if (window.location.href.includes('youtube.com/watch?')) {
BlockClip();
} else if (window.location.href.endsWith('youtube.com/')) {
BlockMainPage();
} else if (window.location.href.includes('youtube.com/channel/') || window.location.href.includes('youtube.com/c/') || window.location.href.includes('youtube.com/user/')) {
BlockChannel();
}
}
function TimeOut() {
setTimeout(Restrict, 1000);
}
for (var i_k = 0; i_k < keywords.length; i_k++) {
keywords[i_k] = keywords[i_k].toLowerCase();
}
window.addEventListener('click', TimeOut, true);
// After page load
TimeOut();