There are 6 previous versions of this script.
// ==UserScript==
// @name TVNZ OnDemand direct download script v0.5.2
// @namespace http://www.additiverich.com/gm/
// @description Links directly to flash video (FLV) files on TVNZ's website
// @include http://tvnz.co.nz/*
// @include http://tvnzondemand.co.nz/content/*
// ==/UserScript==
var player = document.getElementById("player");
if(player) {
for(i = 0; i < player.childNodes.length; i++) {
if(player.childNodes[i].name == "flashvars") {
vars = player.childNodes[i].value;
}
}
}
if(vars) {
tempList = vars.split("&");
for (var i=0;i<tempList.length;i++) {
var pair = tempList[i].split("=");
if (pair[0] == "playlist") {
playlistURI = pair[1];
}
}
}
if(playlistURI) {
/* Download SMIL from server */
GM_xmlhttpRequest({
method: 'GET',
url : 'http://' + document.domain + playlistURI,
onload : completeRequest
});
}
function completeRequest(r) {
var parser = new DOMParser();
var dom = parser.parseFromString(r.responseText, "application/xml");
var videos = dom.getElementsByTagName('seq');
var currentChapter = "";
var links = "";
for (var i = 0; i < videos.length; i++) {
var video = videos[i];
var nielsen = video.getElementsByTagName('param')[0].textContent;
/* Work out chapter number by splitting by doing a RegExp */
var re = new RegExp("chapt-(\\d+)$");
var chapter = ""; match = re.exec(nielsen); if(match) { chapter = match[1]; }
if(chapter) {
var chapters = video.getElementsByTagName('video');
for(var j = 0; j < chapters.length; j++) {
var url = chapters[j].getAttribute("src");
if(url.indexOf("http") > -1) {
var bitrate = chapters[j].getAttribute("systemBitrate");
bitrate = Math.ceil(bitrate / 1000) + "k";
if(chapter != currentChapter) {
if(currentChapter != "") {
links += "</tr>";
}
links += "<tr><td><div class=\"episode_num\">Chapter " + chapter + "</td>";
}
links += "<td><div class=\"episode_num\"><a href=\"" + url + "\">" + bitrate + "</a></div></td>";
if(chapter != currentChapter) {
currentChapter = chapter;
}
}
}
if(links == "") {
links += "Sorry, this show can't be downloaded.";
}
}
}
if(currentChapter != "") { links += "</tr>"; }
if(links != "") {
var els = document.getElementsByTagName("div");
for(i = 0; i < els.length; i++) { if(els[i].className == "episode_num") { episodeNum = els[i]; break; }}
if(episodeNum) {
episodeNum.innerHTML += "<br /><strong>Direct download links</strong><br />";
episodeNum.innerHTML += "<table cellpadding=\"3\" cellspacing=\"3\" width=\"70%\">" + links + "</table>";
}
}
}
