Advertisement
Guest User

Untitled

a guest
Oct 30th, 2023
611
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name         Disable Youtube autoplay
  3. // @description  This script turns off Youtube's newest autoplay feature after the page loads
  4. // @author       MikeZ
  5. // @match        *://*youtube.com/*
  6. // @run-at       document-idle
  7. // @grant        none
  8. // ==/UserScript==
  9.  
  10.  let StopAutoplay_navBtn = undefined;
  11.  let StopAutoplay_ariaNode = undefined;
  12.  const StopAutoplay_config = { attributes: true, childList: false, subtree: false };
  13.  const StopAutoplay_intervalID = window.setInterval(StopAutoplay_enableObserver, 500);
  14.  
  15.  const StopAutoplay_observer = new MutationObserver((mutationList) => {
  16.  
  17.  mutationList.forEach((mutation) => {
  18.    //console.log(mutationList);
  19.     switch (mutation.type) {
  20.       case "attributes":
  21.         switch (mutation.attributeName) {
  22.           case "aria-checked":
  23.                 const navValue = mutation.target.getAttribute('aria-checked');
  24.                 if(navValue == "true") {
  25.                   console.log("Disabling Autoplay....Stopping observer")
  26.                   StopAutoplay_observer.disconnect();
  27.                   StopAutoplay_navBtn.click();
  28.                   console.log("Disabling Autoplay....Re-enabling observer")
  29.                   StopAutoplay_observer.observe(StopAutoplay_ariaNode, StopAutoplay_config);
  30.                 }
  31.             break;
  32.         }
  33.         break;
  34.     }
  35.   });
  36.  
  37. });
  38.  
  39.  
  40. function StopAutoplay_enableObserver() {
  41.   //debugger;
  42.   StopAutoplay_navBtn = document.querySelector('button.ytp-button[data-tooltip-target-id="ytp-autonav-toggle-button"]');
  43.   if (!StopAutoplay_navBtn) return;
  44.  
  45.   console.log("Autoplay control found, enabling observer")
  46.   clearInterval(StopAutoplay_intervalID);
  47.   StopAutoplay_navBtn.style.display = '';
  48.   StopAutoplay_ariaNode = StopAutoplay_navBtn.querySelector('.ytp-autonav-toggle-button');
  49.  
  50.   StopAutoplay_observer.observe(StopAutoplay_ariaNode, StopAutoplay_config);
  51.   StopAutoplay_navBtn.click();
  52. };
  53.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement