There are 2 previous versions of this script.
// ==UserScript==
// @name NZCity TVNOW listing autolinker
// @namespace http://lieschke.net/projects/greasemonkey/
// @description Autolinks listings on the nzcity.co.nz TV guide - the first half to IMDB.com and the second half to Wikipedia.
// @include http://home.nzcity.co.nz/tvnow/tvguide.asp*
// ==/UserScript==
(function() {
var PREFIX = ': ';
String.prototype.trim = new Function("return this.replace(/^\\s+|\\s+$/g, '')");
var linkNodes = function(nodes) {
// Take a copy of the nodes list as it may mutate during traversal.
var temp = [];
for (var i = 0; i < nodes.length; i++) {
temp[i] = nodes[i];
}
nodes = temp;
for (var i = 0; i < nodes.length; i++) {
var node = nodes[i];
if (node.nodeType == 1) {
linkNodes(node.childNodes);
} else if (node.nodeType == 3) {
if (node.nodeValue.indexOf(PREFIX) != -1) {
node.splitText(node.nodeValue.indexOf(PREFIX) + PREFIX.length);
node = node.nextSibling;
createLinks(node);
} else if (node.parentNode.tagName == 'FONT' && node.parentNode.face == 'tahoma' && node.nodeValue.trim() != '') {
createLinks(node);
}
}
}
};
var createLinks = function(node) {
var name = node.nodeValue.replace(/\s*$/, '');
var imdbLink = document.createElement('a');
imdbLink.href = 'http://www.imdb.com/Find?' + name;
imdbLink.appendChild(document.createTextNode(name.substring(0, name.length / 2)));
var wikipediaLink = document.createElement('a');
wikipediaLink.href = 'http://en.wikipedia.org/wiki/Special:Search?search=' + name;
wikipediaLink.appendChild(document.createTextNode(name.substring(name.length / 2)));
node.parentNode.insertBefore(imdbLink, node);
node.parentNode.insertBefore(wikipediaLink, node);
node.nodeValue = ' ';
};
linkNodes(document.body.childNodes);
})();
