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
);
}