Removes Home and Shorts buttons, and redirects to Subscriptions feed
当前为
// ==UserScript==
// @name YouTube Subscriptions Only
// @namespace http://tampermonkey.net/
// @version 1.3.0
// @description Removes Home and Shorts buttons, and redirects to Subscriptions feed
// @author Sanokei
// @match https://www.youtube.com/*
// @license MIT
// ==/UserScript==
(function() {
'use strict';
// Function to remove Home and Shorts buttons
function removeButtons() {
// Target both mini-guide and regular guide entries
const selectors = [
'ytd-mini-guide-entry-renderer',
'ytd-guide-entry-renderer'
];
selectors.forEach(selector => {
const entries = document.querySelectorAll(selector);
entries.forEach(entry => {
// Check if the entry is Home or Shorts by examining its title
const title = entry.querySelector('.title');
if (title && (title.textContent === 'Home' || title.textContent === 'Shorts')) {
entry.style.display = 'none';
}
});
});
}
// Function to hide shorts videos in subscription feed
function hideShorts() {
// Only run on subscription feed
if (window.location.pathname !== '/feed/subscriptions') return;
// Find all video renderers in the page
const videoRenderers = document.querySelectorAll('ytd-grid-video-renderer, ytd-rich-item-renderer');
videoRenderers.forEach(renderer => {
// Look for shorts indicator - either a "shorts" badge or shorts URL
const shortsBadge = renderer.querySelector('[overlay-style="SHORTS"], [aria-label*="Shorts"]');
const shortLink = renderer.querySelector('a[href*="/shorts/"]');
// If this is a shorts video, hide it
if (shortsBadge || shortLink) {
renderer.style.display = 'none';
}
});
}
// Function to redirect to subscriptions if on homepage
function redirectToSubscriptions() {
// Only redirect if we're on the homepage (not already on a video or other page)
if (window.location.pathname === '/' || window.location.pathname === '/watch') {
window.location.href = '/feed/subscriptions';
}
}
// Function to modify YouTube logo links to go to subscriptions
function modifyLogoLinks() {
// Target all YouTube logo links
const logoLinks = document.querySelectorAll('a.yt-simple-endpoint[href="/"]');
logoLinks.forEach(link => {
link.setAttribute('href', '/feed/subscriptions');
});
}
// Run the functions periodically to catch dynamic content
setInterval(() => {
removeButtons();
modifyLogoLinks();
hideShorts();
}, 1000);
// Run once on initial page load
removeButtons();
modifyLogoLinks();
hideShorts();
// Redirect if on homepage
if (window.location.pathname === '/') {
redirectToSubscriptions();
}
// Monitor for navigation events within YouTube (for SPA behavior)
const pushState = history.pushState;
history.pushState = function() {
pushState.apply(history, arguments);
// Check if we've navigated to the homepage
if (window.location.pathname === '/') {
setTimeout(redirectToSubscriptions, 100);
}
// Run functions after navigation
setTimeout(() => {
removeButtons();
modifyLogoLinks();
hideShorts();
}, 500);
};
})();