NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name YouTube - Volume Adjustment by 5% // @name:fr YouTube - Ajustement du volume de 5% // @name:es YouTube - Ajuste del volumen en 5% // @name:de YouTube - Lautstärkeanpassung um 5% // @name:it YouTube - Regolazione del volume del 5% // @name:zh-CN YouTube - 音量调节 5% // @namespace https://gist.github.com/4lrick/0c225473e9609302c6dd6f0dfa4f22a3 // @version 1.3 // @description Increments the audio volume of YouTube videos by 5%. // @description:fr Augmente le volume audio des vidéos YouTube de 5%. // @description:es Aumenta el volumen de audio de los videos de YouTube en un 5%. // @description:de Erhöht die Lautstärke der YouTube-Videos um 5%. // @description:it Aumenta il volume audio dei video YouTube del 5%. // @description:zh-CN 将 YouTube 视频的音频音量增加 5%。 // @author 4lrick // @match https://www.youtube.com/* // @icon https://www.google.com/s2/favicons?sz=64&domain=youtube.com // @grant none // @license GPL-3.0-only // ==/UserScript== (function() { 'use strict'; function adjustVolume(player) { const currentVolume = player.getVolume(); const adjustedVolume = Math.round(currentVolume / 5) * 5; if (adjustedVolume !== currentVolume) { player.setVolume(adjustedVolume); updateLocalStorage(adjustedVolume); } } function updateLocalStorage(volume) { const playerVolume = localStorage.getItem('yt-player-volume'); if (!playerVolume) return; const volumeData = JSON.parse(playerVolume); volumeData.data = JSON.stringify({ volume: volume, muted: JSON.parse(volumeData.data).muted }); localStorage.setItem('yt-player-volume', JSON.stringify(volumeData)); } function checkVideoExists() { const videoElement = document.querySelector('video'); const player = document.getElementById('movie_player'); if (!videoElement || !player) return; videoElement.addEventListener('volumechange', () => adjustVolume(player)); adjustVolume(player); observer.disconnect(); } const observer = new MutationObserver(checkVideoExists); observer.observe(document.body, { childList: true, subtree: true }); checkVideoExists(); })();