Twitch - Refresh on Advert

Detects placeholder ads and refreshes the page or for FFZ users, resets the player.

目前为 2020-11-03 提交的版本。查看 最新版本

// ==UserScript==
// @name         Twitch - Refresh on Advert
// @version      0.2
// @description  Detects placeholder ads and refreshes the page or for FFZ users, resets the player.
// @author       CodingAndAlgorithm
// @match        https://www.twitch.tv/*
// @namespace https://gf.qytechs.cn/users/701035
// ==/UserScript==

(function() {
    'use strict';

    var ffzResetPlayerButton = null;
    var waitLoadInterval = setInterval(WaitForLoadLoop, 500);

    function WaitForLoadLoop()
    {
        var playerControls = document.getElementsByClassName("player-controls tw-absolute tw-align-items-stretch tw-bottom-0 tw-flex tw-flex-column tw-full-width tw-overflow-hidden")[0];
        if(playerControls == null)
        {
            // Player is still loading...
        }
        else
        {
            CheckForFFZ();
            clearInterval(waitLoadInterval);
            setInterval(AdWatcherLoop, 250);
        }
    }

    function CheckForFFZ()
    {
        var ffzResetPlayerIcon = document.getElementsByClassName("ffz-player-icon ffz-i-t-reset")[0];
        if(ffzResetPlayerIcon != null)
        {
            // Work our way upwards until we get to the button.
            ffzResetPlayerButton = ffzResetPlayerIcon.parentNode.parentNode.parentNode;
        }
    }

    function AdWatcherLoop()
    {
        if(IsAdRunning())
        {
            ClearAd();
        }
    }

    function IsAdRunning()
    {
        var videoOverlays = document.getElementsByClassName("tw-c-text-overlay");
        for(var i = 0; i < videoOverlays.length; i++)
        {
            // Identify ad by checking all overlay captions.
            if(videoOverlays[i].textContent.startsWith("Ad 1 of"))
            {
                return true;
            }
        };

        return false;
    }

    function ClearAd()
    {
        if(ffzResetPlayerButton == null)
        {
            location.reload();
        }
        else
        {
            var clickEvent = document.createEvent ('MouseEvents');
            clickEvent.initEvent ('dblclick', true, true);
            ffzResetPlayerButton.dispatchEvent (clickEvent);
        }
    }

})();

QingJ © 2025

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