Delete Plurks

By Peteris Krumins Last update Nov 29, 2009 — Installed 111 times.

There are 2 previous versions of this script.

//
// Delete Plurks                               v1.0  2009.11.29
//
// A greasemonkey script by Peteris Krumins (peter@catonmat.net)
// http://www.catonmat.net  --  good coders code, great reuse
//
// --------------------------------------------------------------------
//
// This is a Greasemonkey user script.
//
// To install, you need Greasemonkey:
// https://addons.mozilla.org/en-US/firefox/addon/748
//
// --------------------------------------------------------------------
//
// ==UserScript==
// @name          Delete Plurks
// @namespace     http://www.catonmat.net
// @description   Adds a button to delete plurks on individual plurk page.
// @include       http://www.plurk.com/p/*
// ==/UserScript==

(function() {

function xpath(query) {
    var elems = document.evaluate(query, document, null,
                XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
    var ret = [];
    for (var i = 0; i < elems.snapshotLength; i++) {
        ret.push(elems.snapshotItem(i));
    }
    return ret;
}

function xpath_map(query, fn) {
    var elements = xpath(query);
    for (var i = 0; i < elements.length; i++) {
        fn(elements[i]);
    }
}

function delete_plurk(plurk_id, id, li)
{
    var url = 'http://www.plurk.com/Responses/deleteResponse';
    var data = 'plurk_id=' + plurk_id + '&id=' + id;
    GM_xmlhttpRequest({
        method: 'POST',
        url: url,
        data: data,
        headers: {
            Referer: 'http://www.plurk.com',
            'Content-type': 'application/x-www-form-urlencoded'
        },
        onload: function(response) {
            li.style.display = "none";
        }
    });
}

function element_str(query, filter) {
    try {
        str = xpath(query)[0].textContent;
        if (str) {
            return filter(str);
        }
    }catch(e){}    
}

function get_my_nick() {
    return element_str('//a[@id="login_link"]',
            function(str){
                return str.match(/Sign out \[(.+)\]/)[1].toLowerCase();
            });
}

function get_owner_nick() {
    return element_str("//a[@class='user-nick']",
            function(str){
                return str.toLowerCase();
            });
}

var my_nick    = get_my_nick();
var owner_nick = get_owner_nick();

var plurk_id_36 = document.location.href.match(/\/p\/(.+)/)[1];
var plurk_id    = parseInt(plurk_id_36, 36);

xpath_map("//li[contains(@id, 'response')]",
    function(li) {
        var id = li.id.match(/\d+/);
        var div = li.childNodes[3];
        var nick = div.childNodes[3].textContent.toLowerCase();

        if (owner_nick == my_nick || nick == my_nick) {
            var a = document.createElement('a');
            a.href='#delete';
            a.innerHTML = "delete";
            a.addEventListener('click', function(evt) {
                delete_plurk(plurk_id, id, li);
            }, false);
            div.appendChild(a);
        }
    });
})();