広告を削除するニコニコ動画用Greasemonkeyスクリプト - (秋)対応版

ニコニコ動画のデザインが変わったので前回のスクリプトを改良した。広告の位置があまり邪魔ではなくなったけど削除っ!

機能

  • ニコニコ市場を除く広告を全て削除する
  • 動画ページではプレイヤーまでスクロールする
  • 履歴項目をセンタリングする
  • ページの先頭へ戻るリンクを(ウザいので)削除する

修正点

  • トップページでカテゴリを変更しても広告は全て削除できるようにした
// ==UserScript==
// @name nicoAdsEraser+Scroller_Autumn
// @namespace null
// @description Script for erasing ads mainly and scrolling to moive section 
// @include http://www.nicovideo.jp/*
// @exclude null
// ==/UserScript==

(function () {
  // フッタにいるアフロのオッサンを削除
  removeNode(document.getElementById('PAGEFOOTER').childNodes[1]);

  // ロゴ左の広告
  if (document.getElementById('web_pc_uneune')) {
    removeNode(document.getElementById('web_pc_uneune').parentNode);
  }

  // トップページ
  if (location.pathname.search(/\/$/) == 0) {

    // 公式カテゴリ
    if (document.getElementById('tabB_category_official').className == 'tag_b0') {
      eraser1();

      onclickPlus();

    // それ以外のカテゴリ
    } else {
      eraser1();
      eraser2();
      eraser3();

      onclickPlus();
    }

  //動画ページ
  } else if (location.pathname.search(/^\/watch/) == 0) {
    removeNode(document.getElementById('rotation_prev').parentNode.parentNode.parentNode.parentNode);
    
    var playerBottom = document.getElementsByClassName('ads_tag');
    if (playerBottom.length > 0) {
      removeNode(playerBottom[0]);
    }

    var googleAdsense = document.getElementsByClassName('mb16p4');
    if (googleAdsense.length > 0) {
      removeNode(googleAdsense[0]);
    }

    //スクロール
    window.scrollTo(0, document.getElementById('WATCHHEADER').offsetTop);

  //タグ検索ページ
  } else if (location.pathname.search(/^\/tag/) == 0) {
    eraser1();
    eraser2();
    eraser3();

    var googleAdsense = $A(document.getElementsByClassName('mb16p4'));
    googleAdsense.length;
    removeNode(googleAdsense[googleAdsense.length -1]);	

  //視聴履歴ページ
  } else if (location.pathname.search(/^\/history/) == 0) {
    eraser1();
    removeNode(document.getElementById('web_pc_branding').parentNode.parentNode);
    //センタリング
    document.getElementById('PAGEBODY').childNodes[3].childNodes[1].childNodes[0].childNodes[1].childNodes[3].style.marginLeft = '120px';

  //その他のページ
  } else {
    eraser1();
    eraser2();
    eraser3();		
  }

//functions
  function getElementsByClassName(name) {
    var elements = [];
    var allElements = document.getElementsByTagName('*');

    for (var i = 0, l = allElements.length; i < l; i++) {
      if (allElements[i].className == name) {
        elements.push(allElements[i]);
      }
    }

    return elements;
  }

  function $A(list) {
    var array = [];

    for(var i = 0, l = list.length; i < l; i++) {
      array.push(list[i]);
    }

    return array;
  }

  function removeNode(targetNode) {
    return targetNode.parentNode.removeChild(targetNode);
  }

  function eraser1() {
    removeNode(document.getElementById('web_pc_top').parentNode);
  }

  function eraser2() {
    removeNode(document.getElementById('web_pc_branding').parentNode);
  }

  function eraser3() {
    var allElements = $A(document.getElementsByTagName('*'));

    for (var i = 0, l = allElements.length; i < l; i++) {
      if (allElements[i].id.search(/^web_pc_categorygroup/) == 0) {
        removeNode(allElements[i].parentNode);
      }

      if (allElements[i].id.search(/^web_pc_megatext/) == 0) {
        removeNode(allElements[i]);
      }
    }

    if (document.getElementById('web_pc_hide') != null) {
      removeNode(document.getElementById('web_pc_hide').parentNode.parentNode);
    }

    if (document.getElementById('web_pc_hide_tpl') != null) {
      removeNode(document.getElementById('web_pc_hide_tpl'));
    }
  }

  function onclickPlus() {
    var tag = $A(document.getElementsByClassName('tag_b1'));

    for (var i = 0, l = tag.length; i < l; i++) {
      var newFunc = 'eraser3();' + 'onclickPlus();' + tag[i].getAttribute('onclick');
      tag[i].setAttribute('onclick', newFunc);
    }
  }
})();

追記|2008.10.06

ロゴ左のGIFアニメ画像が広告の場合に削除できるようにした

追記|2008.10.29

カテゴリによって広告が消えないバグを修正した
プレイヤーの下に出る広告を削除できるようにした

追記|2008.11.07

R-18カテゴリで広告が消えないバグを修正した