Greasy Fork

Greasy Fork is available in English.

Amazon Video AutoSkip ADs

Auto Skip Ads by watching Amazon Prime Video

当前为 2022-10-11 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Amazon Video AutoSkip ADs
// @name:de         Amazon Video Automatisch Werbung überspringen
// @namespace    http://greasyfork.icu/users/928242
// @version      0.5
// @description  Auto Skip Ads by watching Amazon Prime Video
// @description:de  Überspringt automatisch die Werbung beim ansehen von Videos auf Amazon Prime.
// @author       Kamikaze (https://github.com/Kamiikaze)
// @match        https://www.amazon.de/gp/video/detail/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=amazon.de
// @grant        none
// @license      MIT
// ==/UserScript==


// Change to the text matching your language for the skip button
const skipAdButtonText = 'Überspringen'

// How often in X seconds to scan for ADs
const scanInterval = 3

// Start scanning again in X minutes after AD has been skipped
const delayScanInterval = 5


/* ! ! ! ! ! ! ! !

Dont change below!

! ! ! ! ! ! ! ! */


let checkForAds = ''
let skipAdContainer = ''
let skipAdEl = ''
let skipButtonEl = ''
const clp = '[Amazon AutoSkip Script] '

startAdScan()

// Main Function Scanning for ADs
async function scanForADs() {

    if (!isVideoPlaying()) return;

    console.log(clp + "Scanning for running AD..")

    skipAdEl = await getSkipAdElement()

    console.log(clp + "skipButtonEl:", skipAdEl)

    if (!skipAdEl) return

    console.log(clp + "Detected playing AD. Trying to skip..")

    skipAd()
}

// Skipping the AD and restart delayed Scanning
function skipAd() {
    setTimeout( () => {
        skipAdEl.click()
        console.log(clp + "Skipped AD")
        restartAdScan()
    }, 3000 )
}

// Checks if Video is played
function isVideoPlaying() {
    const videoContainer = document.querySelector("#dv-web-player")

    if (!videoContainer) return

    return videoContainer.classList.contains("dv-player-fullscreen")
}

// Finding SkipElement and returning it
async function getSkipAdElement() {
    skipAdContainer = document.querySelector("div.atvwebplayersdk-infobar-container > div > div:nth-child(3)")

    if (!skipAdContainer) return

    return await [...skipAdContainer.childNodes].find( (el) => {

        if (el.innerText == skipAdButtonText) {
            console.log(clp + "Found Skip-Button Element", el)
            console.log(clp + "Skip-Button Text:", el.innerText)

            return el
        }
    });
}

// Starting AdScan Interval
function startAdScan() {
    checkForAds = setInterval( () => { scanForADs() }, scanInterval * 1000 )
}

// Clearing Interval, Vars and delaying restart of scan
function restartAdScan() {
    clearInterval(checkForAds)

    checkForAds = ''
    skipAdContainer = ''
    skipAdEl = ''
    skipButtonEl = ''

    console.log(clp + `Restarting AdScan in ${delayScanInterval} Minutes.`)

    setTimeout( () => { startAdScan() }, delayScanInterval * 60 * 1000 )
}