Youtube Ad Auto Skipper

Automatically click Ad Skip button on Youtube

// ==UserScript==
// @name         Youtube Ad Auto Skipper
// @name:ja      Youtube広告自動スキップ
// @namespace    https://greasyfork.org/users/175598
// @version      3.01
// @description  Automatically click Ad Skip button on Youtube
// @description:ja  自動でYoutubeの広告のスキップボタンを押します
// @author       N.Y.Boyu
// @match        https://www.youtube.com/*
// @exclude      https://www.youtube.com/live_chat?*
// @exclude      https://www.youtube.com/live_chat_replay?*
// @grant        none
// @license      MIT
// ==/UserScript==
(function(){
    var MutationObserver=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;
    if(!MutationObserver){
        return console.error("YAS: Sorry, but this browser is NOT compatible with Youtube Ad Auto Skipper.");
    }
    try{if((window.self!==window.top)&&(document.URL.substring(23,30)!=="/embed/")){
        return console.log("YAS: This frame will not contain video...");
    }}catch(e){}
    console.log("YAS: Youtube Ad Auto Skipper is enabled.");

    var container;
    var check=function(){
        var button=container.getElementsByClassName("ytp-ad-skip-button")[0]||
                   container.getElementsByClassName("ytp-ad-skip-button-modern")[0]||
                   container.getElementsByClassName("ytp-skip-ad-button")[0];
        if(button){
            button.click();
            console.log("YAS: Skipped at "+new Date());
        }
    };
    var initObserver;
    var init=function(){
        if(container=document.getElementById("movie_player")){
            console.log("YAS: Video container detected.");
            initObserver.disconnect();
            new MutationObserver(check).observe(container,{childList:true,subtree:true});
            check();
        }
    };
    (initObserver=new MutationObserver(init)).observe(document.body,{childList:true,subtree:true});
    init();
})();