Replace SOON and Update Views

Replaces the text "SOON" with the video duration and updates the view count in the metadata.

// ==UserScript==
// @name         Replace SOON and Update Views
// @namespace    http://tampermonkey.net/
// @version      0.81
// @description  Replaces the text "SOON" with the video duration and updates the view count in the metadata.
// @match        *://www.youtube.com/*
// @grant        none
// @license      none
// @run-at       document-end
// ==/UserScript==

(function() {
    'use strict';

    function updateVideoInfo() {
        // Substituir "EM BREVE" pelo tempo do vídeo
        document.querySelectorAll('ytd-thumbnail-overlay-time-status-renderer').forEach(overlay => {
            const textElement = overlay.querySelector('.badge-shape-wiz__text');
            const spanTextElement = overlay.querySelector('#text');

            if (textElement && textElement.textContent.trim() === 'EM BREVE') {
                const lengthElement = overlay.closest('ytd-rich-grid-media').querySelector('yt-formatted-string#length');

                if (lengthElement) {
                    const videoTime = lengthElement.textContent.trim();
                    textElement.textContent = videoTime;
                    if (spanTextElement) {
                        spanTextElement.textContent = videoTime;
                    }
                }
            }
        });

        // Atualizar visualizações no metadado do vídeo
        document.querySelectorAll('ytd-video-meta-block').forEach(metaBlock => {
            const ariaLabel = metaBlock.querySelector('yt-formatted-string[aria-label]');
            const viewCountElement = metaBlock.querySelector('span.inline-metadata-item.style-scope.ytd-video-meta-block');

            if (ariaLabel && viewCountElement) {
                // Extrai visualizações do aria-label
                const ariaText = ariaLabel.getAttribute('aria-label');
                const viewCountMatch = ariaText.match(/(\d+ visualizações)/);

                if (viewCountMatch) {
                    const viewCount = viewCountMatch[0];
                    // Substitui o texto do metadado com a contagem de visualizações extraída
                    viewCountElement.textContent = viewCount;
                }
            }
        });
    }

    // Execute a função quando o DOM estiver totalmente carregado
    document.addEventListener('DOMContentLoaded', updateVideoInfo);

    // Execute a função também em intervalos regulares para cobrir alterações dinâmicas
    setInterval(updateVideoInfo, 3000); // Executa a cada 3 segundos
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址