您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Makes all Youtube video titles consistent, only the first letter of the title is uppercase
// ==UserScript== // @name Youtube clickbait capitalization fix // @namespace Youtube // @version 2023-12-18 // @match https://*.youtube.com // @description Makes all Youtube video titles consistent, only the first letter of the title is uppercase // @author You // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== // @grant none // @license MIT // ==/UserScript== function formatTitle(element) { // Get the title attribute of the parent element let titleText = element.parentNode.getAttribute('title'); // Split the title into words let words = titleText.split(' '); // Capitalize the first word and make the rest lowercase words = words.map((word, index) => { if (index === 0) { return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase(); } else { return word.toLowerCase(); } }); // Join the words back together let formattedTitle = words.join(' '); // Set the text content of the element to the formatted title element.textContent = formattedTitle; } function observeTitleChanges() { // Get all elements with the tag <yt-formatted-string> and the id #video-title let titleElements = document.querySelectorAll('yt-formatted-string#video-title'); // Create a MutationObserver instance let observer = new MutationObserver((mutations) => { mutations.forEach((mutation) => { if (mutation.type === 'attributes' && mutation.attributeName === 'title') { formatTitle(mutation.target.querySelector('yt-formatted-string#video-title')); } }); }); // Start observing each parent element for changes in its title attribute titleElements.forEach(titleElement => { observer.observe(titleElement.parentNode, { attributes: true, attributeFilter: ['title'] }); formatTitle(titleElement); }); } (function() { 'use strict'; // Set up a timer to check continuously if the titles have loaded let checkInterval = setInterval(() => { if (document.querySelectorAll('yt-chip-cloud-chip-renderer').length > 5) { clearInterval(checkInterval); observeTitleChanges(); } }, 500); })();