del.icio.us undupe

By Paul Roub Last update Jun 19, 2005 — Installed 960 times.
// ==UserScript==
// @name          del.icio.us undupe
// @namespace     http://roub.net/
// @description   Removes redundant del.icio.us entries from a page -- leaves only the first entry for a given URL
// @include       http://del.icio.us/*
// ==/UserScript==
//
// History: http://roub.net/xul/greasemonkey/delundupe.history.txt
//

function dundupeNodeClass(node)
{
    if (node.getAttribute && node.getAttribute('class'))
    {
        return(node.getAttribute('class'));
    }

    return("");
}

(function() {
    // ORDERED_NODE_SNAPSHOT_TYPE

    var seenLinks = new Array();
    var lns = document.evaluate("//a[@class='delLink']", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);

    for (var i = 0; i < lns.snapshotLength; i++) 
    {
        var ln = lns.snapshotItem(i);

        var parEl = ln.parentNode;
        var child = ln;

        while (parEl && (parEl != child) && (dundupeNodeClass(parEl) != 'post'))
        {
            child = parEl;
            parEl = child.parentNode;
        }

        if (seenLinks[ln.href])
        {
            if (dundupeNodeClass(parEl) == 'post')
            {
                parEl.parentNode.removeChild(parEl);
            }
        }
        else
        {
            seenLinks[ln.href] = 1;
        }
    }
})();