rendered paste body// ==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);
}
}