YouTube Louder

Make video louder

// ==UserScript==
// @name YouTube Louder
// @description Make video louder
// @match https://www.youtube.com/watch*
// @icon https://upload.wikimedia.org/wikipedia/commons/thumb/e/e1/Logo_of_YouTube_%282015-2017%29.svg/2560px-Logo_of_YouTube_%282015-2017%29.svg.png
// @version 1
// @license MIT

// @namespace https://greasyfork.org/users/803889
// ==/UserScript==


function louder() {

	const div = document.getElementById("above-the-fold");
	const divAbove = document.createElement("div");
	divAbove.id = "volumeRocker"
	divAbove.className = "slidecontainer"
	div.parentNode.insertBefore(divAbove, div)

	const para = document.createElement("p")
	para.innerText = 'Volume Doubler: '
	const volSpan = document.createElement("span")
	volSpan.id = 'set-volume'
	para.appendChild(volSpan)
	divAbove.appendChild(para)

	const input = document.createElement("input");
	input.className = "slider"
	input.id = "myRange"
	input.type = "range"
	input.min = "1"
	input.max = "20"
	input.value = "1"
	divAbove.appendChild(input);


	const videoElement = document.querySelector("video")
	const audioCtx = new AudioContext()
	const source = audioCtx.createMediaElementSource(videoElement)
	const gainNode = audioCtx.createGain()
	gainNode.gain.value = 1
	source.connect(gainNode)
	gainNode.connect(audioCtx.destination)

	const slider = document.getElementById("myRange");
	const output = document.getElementById("set-volume");
	output.innerHTML = slider.value;


	slider.addEventListener("input", function () {
		output.innerHTML = this.value;
		gainNode.gain.value = this.value;
	});

	
}



let counter = 0
try {
	let interval_documentHidden = setInterval(function checker() {
		if (!document.hidden && document.readyState === 'complete' && (document.querySelector('ytd-watch-metadata') !== null)) {
			if (counter <= 15) {
				louder()
				clearInterval(interval_documentHidden)
			} else {
				counter++
				if (counter <= 15) {
					console.log('YouTube Louder: --Counter limited reached-- Could not like video or setup observer. Try refreshing the page.?')
					clearInterval(interval_documentHidden)
					return
				}
			}
		}
	}, 2000)
} catch (err) {
	console.log('YouTube Louder: Error occured\n######\n\nerr' + err + '\n\n######')
}