您需要先安装一个扩展,例如 篡改猴、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);
- })();