delicious network info

By thomd Last update Aug 2, 2008 — Installed 188 times.

There are 1 previous version of this script.

// ==UserScript==
// @name          del.icio.us network info
// @namespace     http://thomd.net/userscript
// @description   adds number of users from your network and number of your fans to header links  
// @include       http://del.icio.us/*
// @include       http://*.del.icio.us/*
// @include       http://delicious.com/*
// @include       http://*.delicious.com/*
// @author        Thomas Duerr
// @version       0.2
// @date          2008-08-02
// ==/UserScript==


// xpath helper
function $x(p, context){
	if (!context) context = document;
	var i, arr = [], xpr = document.evaluate(p, context, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
	for (i = 0; item = xpr.snapshotItem(i); i++) arr.push(item);
	return arr;
}

// objectKeys2array-helper
function $o2a(o){
	var a = [];
	for(e in o){
		a.push(e);
	}
	return a;
}



// get username
var user = document.evaluate("id('signedInAs')", document, null, 9, null).singleNodeValue.textContent;

if(user != null){

	// Check if there is a 'Network'-link. Only then insert network-infos
	var altMessageLinks = $x("id('alt_message')/*");
	if(altMessageLinks.length > 0){
		for(am = 0; am < altMessageLinks.length; am ++){
			if(altMessageLinks[am].textContent.match(/^Network/) != null){

				// network json-feed
				GM_xmlhttpRequest({
					method: 'GET',
					url: 'http://feeds.delicious.com/v2/json/networkmembers/'+user+'?callback=updateNetwork',
					onload: function(responseDetails){
						eval(responseDetails.responseText);
					}
				});

				// fans json-feed
				GM_xmlhttpRequest({
					method: 'GET',
					url: 'http://feeds.delicious.com/v2/json/networkfans/'+user+'?callback=addFans',
					onload: function(responseDetails){
						eval(responseDetails.responseText);
					}
				});

				break;
			}
		}
	}
}


var updateNetwork = function(network){
	$x("id('alt_message')/a[2]")[0].textContent += " (" + $o2a(network).length + ")";
}


var addFans = function(fans){
	
	var fansLink = document.createElement("a");
	fansLink.setAttribute("href", "/network/" + user);
	fansLink.appendChild(document.createTextNode("Fans (" + $o2a(fans).length + ")"));

	var pipe = document.createElement("em");
	pipe.appendChild(document.createTextNode(" | "));
	
	var linkList = $x("id('alt_message')")[0];
	linkList.insertBefore(pipe, $x("id('alt_message')/*[4]")[0])
	linkList.insertBefore(fansLink, $x("id('alt_message')/*[5]")[0])
}





//
// ChangeLog
// 2008-03-06 - 0.1 - created
// 2008-08-01 - 0.2 - support for new delicious-relaunch