YouTube - Volume Adjustment by 5%

Increments the audio volume of YouTube videos by 5%.

Install this script?
Author's suggested script

You may also like YouTube - Display current volume.

Install this script
  1. // ==UserScript==
  2. // @name YouTube - Volume Adjustment by 5%
  3. // @name:fr YouTube - Ajustement du volume de 5%
  4. // @name:es YouTube - Ajuste del volumen en 5%
  5. // @name:de YouTube - Lautstärkeanpassung um 5%
  6. // @name:it YouTube - Regolazione del volume del 5%
  7. // @name:zh-CN YouTube - 音量调节 5%
  8. // @namespace https://gist.github.com/4lrick/0c225473e9609302c6dd6f0dfa4f22a3
  9. // @version 1.3
  10. // @description Increments the audio volume of YouTube videos by 5%.
  11. // @description:fr Augmente le volume audio des vidéos YouTube de 5%.
  12. // @description:es Aumenta el volumen de audio de los videos de YouTube en un 5%.
  13. // @description:de Erhöht die Lautstärke der YouTube-Videos um 5%.
  14. // @description:it Aumenta il volume audio dei video YouTube del 5%.
  15. // @description:zh-CN 将 YouTube 视频的音频音量增加 5%。
  16. // @author 4lrick
  17. // @match https://www.youtube.com/*
  18. // @icon https://www.google.com/s2/favicons?sz=64&domain=youtube.com
  19. // @grant none
  20. // @license GPL-3.0-only
  21. // ==/UserScript==
  22.  
  23. (function() {
  24. 'use strict';
  25.  
  26. function adjustVolume(player) {
  27. const currentVolume = player.getVolume();
  28. const adjustedVolume = Math.round(currentVolume / 5) * 5;
  29.  
  30. if (adjustedVolume !== currentVolume) {
  31. player.setVolume(adjustedVolume);
  32. updateLocalStorage(adjustedVolume);
  33. }
  34. }
  35.  
  36. function updateLocalStorage(volume) {
  37. const playerVolume = localStorage.getItem('yt-player-volume');
  38. if (!playerVolume) return;
  39.  
  40. const volumeData = JSON.parse(playerVolume);
  41. volumeData.data = JSON.stringify({
  42. volume: volume,
  43. muted: JSON.parse(volumeData.data).muted
  44. });
  45.  
  46. localStorage.setItem('yt-player-volume', JSON.stringify(volumeData));
  47. }
  48.  
  49. function checkVideoExists() {
  50. const videoElement = document.querySelector('video');
  51. const player = document.getElementById('movie_player');
  52.  
  53. if (!videoElement || !player) return;
  54.  
  55. videoElement.addEventListener('volumechange', () => adjustVolume(player));
  56. adjustVolume(player);
  57. observer.disconnect();
  58. }
  59.  
  60. const observer = new MutationObserver(checkVideoExists);
  61. observer.observe(document.body, { childList: true, subtree: true });
  62. checkVideoExists();
  63. })();