All pastes #460414 Raw Edit

Mine

public text v1 · immutable
#460414 ·published 2007-04-27 01:03 UTC
rendered paste body
// ==UserScript==
// @name           Duckroll warning system
// @namespace      lolwut
// @description    Adds "[duckroll]" next to links that are duckrolls
// @include        http://*.4chan.org/*
// ==/UserScript==


var links = get("//td[@class='reply']/blockquote/font[@class='unkfunc']/a[@class='quotelink']");
var ops = get("/html/body/form/span[contains(@id, 'nothread')]/a[@class='quotejs' and position()=1]");
var forum = get("/html/body/form[@name='delform']").snapshotItem(0);
var threads = 0;

for(var i = 0; i < forum.childNodes.length; i++) {
  if(/nothread/.test(forum.childNodes[i].id)) {
    threads++;
  }

  if(forum.childNodes[i].nodeName.toLowerCase() == "table") {
    forum.childNodes[i].setAttribute("threadnumber", threads - 1);
  }

  if(forum.childNodes[i].nodeName.toLowerCase() == "center") {
    break;
  }
}


for(var i = 0; i < links.snapshotLength; i++) {
  var link = links.snapshotItem(i);
  var anchor = link.href.split("#")[1];
  var thread = link.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.getAttribute("threadnumber");

  if(link.href.split("#")[0] != ops.snapshotItem(thread).href.split("#")[0]) {
    link.parentNode.insertBefore(document.createTextNode(" [duckroll]"), link.nextSibling);
  }
}



function get(query) {
  return document.evaluate(
    query,
    document,
    null,
    XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
    null
  );
}