There are 11 previous versions of this script.
// ==UserScript==
// @name Last.fm - Artist average plays
// @namespace
// @description Determines the average plays per listener. Suggested by meninc
// @include http://www.last.fm/music/*
// ==/UserScript==
(function () {
var editBlock = document.getElementById("catalogueHead");
var listOfStats = xpath('//p[@class="stats"]')
if (listOfStats.snapshotLength > 0) {
editBlock = listOfStats.snapshotItem(0);
var plays = editBlock.innerHTML.match(/<span.*>([\,0-9]*)</)[1];
var listeners = editBlock.innerHTML.match(/\(([\,0-9]*) listeners/)[1];
plays = plays.replace(/,/g,''); listeners = listeners.replace(/,/g,'');
var avePlays = plays/listeners; avePlays = commatize(avePlays.toFixed(2));
editBlock.innerHTML = editBlock.innerHTML.replace(/<br/i,"<br /> Average "+avePlays+" Plays/Listener<br");
} else {
editBlock = document.getElementById("scrobblesAndListeners");
var edittedText = editBlock.childNodes[1].innerHTML+"";
var plays = edittedText.match(/<span.*>([0-9,]*)<.span>/i)[1]; plays = plays.replace(/,/g,'');
edittedText = editBlock.childNodes[3].innerHTML+"";
var listeners = edittedText.match(/<span.*>([^<]*)<.span>/i)[1]; listeners = listeners.replace(/,/g,'');
if (listeners != 0){ var avePlays = plays/listeners; avePlays = commatize(avePlays.toFixed(2));
// editBlock.innerHTML += '<span width="100%"><span class="container listeners scrobbles" width="200%" align="center">\n<span >'+(avePlays)+'</span> <dfn title="Average tracks per listener.">Average</dfn>\n</span></span>';
editBlock.innerHTML += '<span class="container" width="100%" style="width:100%; text-align: center;" align=center>\n <span>'+(avePlays)+'</span> <dfn title="Average tracks per listener.">Average</dfn> \n</span>';
}
}
}) ();
function xpath(query) {
return document.evaluate(query, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
}
function commatize(number) {
var numdp = number.split(".");
if (numdp.length == 2) {
var decimal = numdp[1];
}
var integer = numdp[0];
if (integer.length < 4) {
return(number);
}
var stubFrnt = integer.length % 3;
if (stubFrnt == 0) {stubFrnt = 3;}
var newnumber = integer.substr(0,stubFrnt);
var oldPos = stubFrnt;
while(oldPos < integer.length ) {
newnumber = newnumber + "," + integer.substr(oldPos, 3);
oldPos = oldPos + 3;
}
if (numdp.length == 2) {
newnumber = newnumber + "." + decimal;
}
return(newnumber);
}