By Burn
Has 2 other scripts.
//
// Youtube Advanced Stats
// v0.9.3
//
// Copyright (C)2007-2008 Burn - raenkrus@gmail.com
//
// Released under the GPL license
// http://www.gnu.org/copyleft/gpl.html
//
// ==UserScript==
// @name Youtube Advanced Stats
// @author Burn - raenkrus@gmail.com
// @version 0.9.3
// @description Shows differences in Youtube Account Page since last refresh
// @include http://*youtube.com/my_account*
// ==/UserScript==
window.addEventListener(
'load',
function() { YouTubeAdvancedStats() },
true
);
function YouTubeAdvancedStats() {
var Debug = 0; // set Debug = 1 to enable GM_log entries in Javascript Console
var divs = document.getElementsByTagName('div');
var spans = document.getElementsByTagName('span');
var RE_usern = /">(\w+)<\/a/i; // "
var ClassBody = document.getElementsByTagName('body')[0].className;
var SpanToRemove = /it_IT/.test(ClassBody) ? 28 : 30;
if (Debug) {GM_log(ClassBody+" : "+SpanToRemove);}
// first we try to get the username
for (var k=0;k<divs.length;k++) {
if(divs[k].className == "dropdown-link") {
var User = new String(divs[k].innerHTML.match(RE_usern));
if (User != null) {
User = User.replace(RE_usern,"").replace(",","");
if (Debug){GM_log('user OK: '+User);}
break;
} else {
User = "default";
}
}
}
// read the stored GM vars containing the old values
// or set them to 0 if empties
var SeenVids = GM_getValue(User+"_videoguardati", 0);
var LoadedVids = GM_getValue(User+"_videocaricati", 0);
var Visualiz = GM_getValue(User+"_visualizzazioni", 0);
var Prefs = GM_getValue(User+"_preferiti", 0);
var ChanVisits = GM_getValue(User+"_vis_canale", 0);
var Subscr = GM_getValue(User+"_iscritti", 0);
var ARR_stats = new Array();
var RE_nums = /<\/span>\s+([a-z0-9]+)<br>/gi;
// search for the actual values
for (var i=0,j=0;i<divs.length;i++) {
var CN = divs[i].className.toString();
if(CN.substring(0,9) == "statBlock") {
if (Debug){GM_log('statBlock OK');}
divs[i].innerHTML = divs[i].innerHTML.replace(",","").replace(",","");
ARR_stats[j++] = new String(divs[i].innerHTML.match(RE_nums));
if (Debug){GM_log(ARR_stats[(j-1)]);};
}
}
// replace with the RegExp first match
var Stats1 = ARR_stats[0].replace(RE_nums,"$1");
var ARR_Stats1 = Stats1.split(",");
var Stats2 = ARR_stats[1].replace(RE_nums,"$1");
var ARR_Stats2 = Stats2.split(",");
// put actual values into vars
var vidvisti = ARR_Stats1[0] != "undefined" ? ARR_Stats1[0] : "ERR";
var vidcaric = ARR_Stats1[1] != "undefined" ? ARR_Stats1[1] : "ERR";
var visualizz = ARR_Stats1[2] != "undefined" ? ARR_Stats1[2] : "ERR";
var prefer = ARR_Stats1[3] != "undefined" ? ARR_Stats1[3] : "ERR";
var viscanale = ARR_Stats2[0] != "undefined" ? ARR_Stats2[0] : "ERR";
var iscriz = ARR_Stats2[1] != "undefined" ? ARR_Stats2[1] : "ERR";
if (Debug){
GM_log(vidvisti+" "+vidcaric+" "+visualizz+" "+prefer+" "+viscanale+" "+iscriz);
//GM_log(vidvisti+" "+vidcaric+" "+prefer+" "+viscanale+" "+iscriz);
GM_log(typeof(vidvisti)+ " "+typeof(vidcaric)+" "+typeof(visualizz)+" "+typeof(prefer)+" "+typeof(viscanale)+" "+typeof(iscriz));
//GM_log(typeof(vidvisti)+ " "+typeof(vidcaric)+" "+typeof(prefer)+" "+typeof(viscanale)+" "+typeof(iscriz));
}
// store actual values in GM vars
GM_setValue(User+"_videoguardati", vidvisti);
GM_setValue(User+"_videocaricati", vidcaric);
GM_setValue(User+"_visualizzazioni", visualizz);
GM_setValue(User+"_preferiti", prefer);
GM_setValue(User+"_vis_canale", viscanale);
GM_setValue(User+"_iscritti", iscriz);
// some html code
var HTMLo = "(<font color='red'>";
var HTMLc = "</font>)";
var diffVidVisti = (vidvisti-SeenVids)>0?HTMLo+"+"+(vidvisti-SeenVids)+HTMLc:" ";
var diffVidCaricati = (vidcaric-LoadedVids)>0?HTMLo+"+"+(vidcaric-LoadedVids)+HTMLc:(vidcaric-LoadedVids)<0?HTMLo+(vidvcaric-LoadedVids)+HTMLc:" ";
var diffVisualiz = (visualizz-Visualiz)>0?HTMLo+"+"+(visualizz-Visualiz)+HTMLc:" ";
var diffPrefs = (prefer-Prefs)>0?HTMLo+"+"+(prefer-Prefs)+HTMLc:(prefer-Prefs)<0?HTMLo+(prefer-Prefs)+HTMLc:" ";
var diffVisCan = (viscanale-ChanVisits)>0?HTMLo+"+"+(viscanale-ChanVisits)+HTMLc:" ";
var diffSubscr = (iscriz-Subscr)>0?HTMLo+"+"+(iscriz-Subscr)+HTMLc:(iscriz-Subscr)<0?HTMLo+(iscriz-Subscr)+HTMLc:" ";
var str_gen = new String(diffVidVisti+"_"+diffVidCaricati+"_"+diffVisualiz+"_"+diffPrefs+"_"+diffVisCan+"_"+diffSubscr);
//var str_gen = new String(diffVidVisti+"_"+diffVidCaricati+"_"+diffPrefs+"_"+diffVisCan+"_"+diffSubscr);
var ARR_strgen = new Array();
ARR_strgen = str_gen.split("_");
// a workaround to remove the "channel type"
spans[SpanToRemove].parentNode.removeChild(spans[SpanToRemove]);
for (i=0,j=0;i<spans.length;i++) {
if(spans[i].className == "grayText") {
if (Debug) {
GM_log('grayText OK : '+spans[i].className);
var RE = /(canale)|(ype)/i;
if(RE.test(spans[i].innerHTML)) {
GM_log(spans[i].innerHTML);
GM_log("Channel type: Node #"+i);
}
}
spans[i].innerHTML += " " + ARR_strgen[j++];
}
}
var RE_final = /(\(<font color="red">[\+|-]\d+<\/font>\))(<\/span>)\s+(\d+)<br>/g;
for (i=0,tot=0;i<divs.length;i++) {
CN = divs[i].className.toString();
if (CN.substring(0,9) == "statBlock") {
var temp = "";
divs[i].innerHTML = temp = divs[i].innerHTML.replace(RE_final,"$2$3 $1<br>");
if (Debug){GM_log('statBlock OK : '+CN);GM_log(temp);}
tot = i;
}
}
}