Greasy Fork

Prime Video Ad Blocker [ESP]

Skip Ads in Prime Video Spain. Adapted from RawMeatEater's script for spanish Amazon site.

目前为 2022-08-13 提交的版本。查看 最新版本

// ==UserScript==
// @name            Prime Video Ad Blocker [ESP]
// @namespace       https://greasyfork.org/en/users/5102-jeau
// @version         0.1.4
// @description     Skip Ads in Prime Video Spain. Adapted from RawMeatEater's script for spanish Amazon site.
// @description:es  Bloquea los anuncios en Prime Video España. Adaptado a partir del código de RawMeatEater para la web de Amazon España.
// @author          Jeau
// @license         MIT
// @match           https://www.primevideo.com/*
// @icon            https://m.media-amazon.com/images/G/01/digital/video/DVUI/favicons/favicon-32x32.png
// @grant           none
// ==/UserScript==

(function() {
    'use strict';

    // This value when true shows that the ad has been skipped
    var adSkipped = false;

    // Time delay to avoid temporary freezing of Amazon Web Player on first run
    setTimeout(function() {

        // Every 0.2 seconds, this function runs
        setInterval(function() {

            // Selects the video container's child (Which is the video element)
            if (document.getElementsByClassName("rendererContainer")[0]) {
                var video = document.getElementsByClassName("rendererContainer")[0].children[2];

                // If Time To Skip element exist
                if ( document.getElementsByClassName("atvwebplayersdk-adtimeindicator-text")[0] ){

                    // Has it been skipped aready? (This is so that way you don't skip forward twice)
                    if ( adSkipped == false ) {

                        // Grabs the ad timer in HH:MM:SS format and splits it into an array
                        var currentAdTime = document.getElementsByClassName("atvwebplayersdk-adtimeindicator-text")[0].innerHTML.split(':');

                        // Calculate the Ad time in seconds
                        var adTimeInSecs = 0;
                        for (let i = 0; i < currentAdTime.length; i++) {
                            adTimeInSecs += parseInt(currentAdTime[i]) * Math.pow(60, currentAdTime.length - 1 - i);
                        }

                        // It then skipped forward the video by how much ad time the timer shows
                        video.currentTime = video.currentTime + adTimeInSecs;

                        // Shows that the ad has been skipped
                        adSkipped = true;
                    }

                } else {
                    // When ad timer disappers, reset the ad skip value
                    adSkipped = false;
                }
            }

        // When 200 milliseconds pass, execute script
        }, 200);

    }, 1500);

})();