// ==UserScript== // @name Homestar Subtitles Beta // @namespace http://www.hrwiki.org/ // @description Subtitles for Homestar Runner // @include http://homestarrunner.com/* // @include http://www.homestarrunner.com/* // @include http://podstar.homestarrunner.com/* // @include http://videlectrix.com/* // @include http://www.videlectrix.com/* // @include http://hrwiki.org/mirror/* // @include http://www.hrwiki.org/mirror/* // @include https://secure.homestarrunner.com/heythanks.html* // ==/UserScript== var characterColors = new Object(); var characterNames = new Object(); GM_xmlhttpRequest({ method: "GET", url: "http://www.hrwiki.org/index.php/HRWiki:Subtitles/Characters?action=raw", onload: charactersLoaded }); function charactersLoaded(results) { var parser = new unsafeWindow.DOMParser(); var text = results.responseText; text = text.replace(/^\s+/g, ''); var doc = parser.parseFromString(text, "application/xml"); var speakers = doc.getElementsByTagName('speaker'); for (var i = 0; i < speakers.length; i++) { var speakername = speakers[i].getAttribute('id'); characterColors[speakername] = speakers[i].getAttribute('color'); characterNames[speakername] = new Object(); var names = speakers[i].getElementsByTagName('name'); for (var j = 0; j < names.length; j++) { var lang = names[j].getAttribute('xml:lang'); characterNames[speakername][lang] = names[j].firstChild.nodeValue; } } /* debugging - just print out the stuff */ while(document.body.firstChild) document.body.removeChild(document.body.firstChild); for (i in characterColors) { p = document.createElement('p'); p.style.color = characterColors[i]; p.appendChild(document.createTextNode(i + ' - ')); for (j in characterNames[i]) { p.appendChild(document.createTextNode(j + ': ' + characterNames[i][j] + ' ')); } document.body.appendChild(p); } }