Auto Skip ADs, Summary & More | Amazon Video

Automatically skips ads, recaps, previews and more when watching videos on Amazon Prime.

As of 21. 10. 2022. See the latest version.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         	Auto Skip ADs, Summary & More | Amazon Video
// @name:de         Automatisches Überspringen von Werbung, Zusammenfassung & mehr | Amazon Video
// @namespace   	https://greasyfork.org/users/928242
// @version     	0.6
// @description  	Automatically skips ads, recaps, previews and more when watching videos on Amazon Prime.
// @description:de  Überspringt automatisch Werbung, Zusammenfassungen, Vorschauen und mehr, wenn du Videos auf Amazon Prime ansiehst.
// @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()

	skipCredits()

	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 )
}

function skipCredits() {
	const buttonEl = document.querySelector("button.atvwebplayersdk-skipelement-button")

	if (!buttonEl) return;

	console.log(clp + "Skipped Credits")
	buttonEl.click()
}

// 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 )
}