bdwmBlacklist

blacklist the links from certain boards in the main page.

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name        bdwmBlacklist
// @namespace   bdwmBlacklist
// @description blacklist the links from certain boards in the main page.
// @include     *bdwm.net/bbs/main0.php
// @version     0.2a
// @grant       none
// ==/UserScript==

function boardNameFromLink(link) {
  var idx = link.indexOf('board=');
  if (idx==-1) {
    return null;
  } else {
    return link.substring(idx+6).match(/\w+/)[0];
  }
}

function nodeWithClass(node, classKey) {
  // find an ancestor of a node
  // whose class name contains classKey
  myNode = node;
  if (node==null) {
    console.log('null node');
    return null;
  }
  // find the ancestor with certain class
  while (node.className!=null && node.className.indexOf(classKey)<0) {
    node = node.parentNode;
  }
  
  if (node.className==null) {
    console.log('error finding class, return the node instead');
    return myNode;
  } else {
    console.log('Class ' + node.className + ' found.');
    return node;
  }
}

function blacklistBoard(boardlist) {
  console.log('Going to block '+boardlist.length+' boards.');
  var blackList = {};
  for (var i in boardlist) {
    blackList[boardlist[i]] = true;
  }
  var links = document.getElementsByTagName('a');
  var nodesToRemove = [];
  console.log(links.length+' links detected.');

  for (var i in links) {
    console.log('Link: ' + links[i].href);
    if (links[i].href == null) continue;
    var bName = boardNameFromLink(links[i].href);
    //    console.log('Find board: ' + bName);
    if (bName != null && blackList[bName]) {
      var spanNode = nodeWithClass(links[i], 'Rank');
      if (spanNode != null && nodesToRemove.indexOf(spanNode)<0) {
        // not exist, add it
        console.log('Going to remove class: ' + spanNode.className);
        nodesToRemove.push(spanNode);
      }
    }
  }

  console.log('Removing...');
  for (var i in nodesToRemove) {
    console.log('Removing class: ' + nodesToRemove[i].className);
    nodesToRemove[i].parentNode.removeChild(nodesToRemove[i]);
  }
}

blacklistBoard(['Boy', 'SecretGarden', 'PieBridge', 'Triangle', "Joke"]);