// ==UserScript==
// @name     nicovideo_ads_blocker
// @version  1
// @include  http://www.nicovideo.jp/watch/*
// @grant    none
// ==/UserScript==

window.eval(`
  //再生前広告ブロック: 再生前広告用取得呼び出しに対して噓を吐くfetch
  if(!window.fetch._replaced){
    let _fetch = window.fetch;
    window.fetch = function(url){
      if(url.indexOf("http://ads.nicovideo.jp/api/video/getAd.php") != 0){
        return _fetch(... arguments);
      }
      return new Promise((r) => {
        r({
          text: () => {
            return new Promise((r) => {
              r('<?xml version="1.0" encoding="UTF-8"?><VAST version="3.0"></VAST>');
            });
          }
        });
      });
    };
    window.fetch._replaced = true;
  }

  //ついでに他の広告も消す
  if(window.Ads && window.Ads.__internal__ && window.Ads.__internal__.Api){
    let api = window.Ads.__internal__.Api;
    for(let i = 0; i < api.count; i++){
      window[api.prefix + "_" + i] = function(){};
    }
    api.loadScript = function(){};
  }
`);