Archived from groups: alt.video.ptv.tivo (More info?)
<!--save this as an .xhtml file, put in the appropiate IP(s), media
access key, and drive size
and click on expires to sort-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-
transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Loading...</title>
<script type="text/javascript">
<![CDATA[
var tivo = new Array(5);
tivo[0]=["Living Room","192.168.0.101"];
//tivo[1]=["Master Bedroom","192.168.0.101"];
//tivo[2]=["Den","192.168.0.101"];
//tivo[3]=["Kitchen","192.168.0.101"];
//tivo[4]=["Bathroom","192.168.0.101"];
var mak='0123456789'; //your media access key
var totalGB = 29.252; //(optional) total gigabytes used to record shows
window.onload = function (evt) {
if (tivo[1]){
var f = document.createElement('form');
f.setAttribute('name','frmSelTiVo');
f.setAttribute('id','frmSelTiVo');
var s = document.createElement('select');
s.setAttribute('disabled',"disabled" );
s.setAttribute('name','selTiVos');
s.setAttribute('id','selTiVos');
s.onchange=getContent;
var o = new Array(5);
var oTN = new Array(5);
for (i = 0; i < 5; i++) {
if (tivo[i]){
o[i] = document.createElement('option');
o[i].setAttribute('value',tivo[i][1]);
oTN[i] = document.createTextNode(tivo[i][0]);
o[i].appendChild(oTN[i]);
s.appendChild(o[i]);
}
}
f.appendChild(s);
document.body.appendChild(f);
}
getContent();
}
function getContent(){
var tivo_ip = tivo[0][1];
if (document.getElementById("selTiVos" )){
var tivo_list = document.getElementById("selTiVos" );
tivo_list.setAttribute('disabled','disabled');
tivo_ip = tivo_list.options[tivo_list.selectedIndex].value;
}
document.title="Loading...";
if (document.getElementById('content')){
document.body.removeChild(document.getElementById('content'));
}
var contentDiv = document.createElement('div');
contentDiv.setAttribute('id','content');
document.body.appendChild(contentDiv);
var xsltNS = 'http://www.w3.org/1999/XSL/Transform';
var xsltSheet = document.getElementsByTagNameNS(xsltNS,
'stylesheet')[0];
var xsltProcessor = new XSLTProcessor();
var xmlDoc;
xsltProcessor.importStylesheet(xsltSheet);
var myXMLHTTPRequest = new XMLHttpRequest();
netscape.security.PrivilegeManager.enablePrivilege
('UniversalBrowserRead');
myXMLHTTPRequest.open("GET", 'https://'+tivo_ip+
'/TiVoConnect?Command=QueryContainer&Container=%
2FNowPlaying&Recurse=Yes'
, true,'tivo',mak);
myXMLHTTPRequest.send(null);
myXMLHTTPRequest.onreadystatechange=function() {
if (myXMLHTTPRequest.readyState==4) {
netscape.security.PrivilegeManager.enablePrivilege
('UniversalBrowserRead');
xmlDoc = myXMLHTTPRequest.responseXML;
var fragment = xsltProcessor.transformToFragment(xmlDoc,
document);
document.getElementById('content').appendChild(fragment);
convertDates();
calcTimeLeft();
var tblNP = document.getElementById('nowPlay');
for (i = 0; i < tblNP.rows.length; i++) {
getExpDate(tivo_ip, tblNP.rows[i].cells[2], i,
tblNP.rows.length-1);
}
if (document.getElementById("selTiVos" )){
document.getElementById("selTiVos" ).removeAttribute
('disabled');
}
}
}
}
function getExpDate(tivo_ip, node, timesCalled, timesToBeCalled){
var showId = node.childNodes[0].childNodes[0].nodeValue;
var myXMLHTTPRequest = new XMLHttpRequest();
netscape.security.PrivilegeManager.enablePrivilege
('UniversalBrowserRead');
myXMLHTTPRequest.open("GET", 'https://'+tivo_ip+
'/TiVoVideoDetails?id='+showId, true,'tivo',mak);
myXMLHTTPRequest.send(null);
myXMLHTTPRequest.onreadystatechange=function() {
if (myXMLHTTPRequest.readyState==4) {
if (myXMLHTTPRequest.status!=200){
getExpDate(tivo_ip, node, timesCalled, timesToBeCalled);
} else {
netscape.security.PrivilegeManager.enablePrivilege
('UniversalBrowserRead');
var responseText = myXMLHTTPRequest.responseText;
var zuluTime = responseText.match( /<expirationTime>(.+)
<\/expirationTime>/ )
var spanNode = document.createElement("span" );
if (zuluTime[1]=='2038-01-19T00:00:00Z') {
var textNode=document.createTextNode('Never');
spanNode.appendChild(textNode);
node.appendChild(spanNode);
node.childNodes[0].childNodes[0].nodeValue=
9999999999;
} else{
var y = zuluTime[1].substring(0,4);
var mo = zuluTime[1].substring(5,7);
var d = zuluTime[1].substring(8,10);
var h = zuluTime[1].substring(11,13);
var m = zuluTime[1].substring(14,16);
var s = zuluTime[1].substring(17,19);
var expDate = new Date(Date.UTC(y,mo-1,d,h,m,s));
var weekday=new Array
("Sun","Mon","Tue","Wed","Thu","Fri","Sat" );
var d =weekday[expDate.getDay()]+' '+
(expDate.getMonth()+1)+'/'+expDate.getDate();
var textNode=document.createTextNode(d);
var di = document.createElement("div" );
var tn = document.createTextNode(getClockTime
(expDate));
di.appendChild(tn);
spanNode.appendChild(textNode);
spanNode.appendChild(di);
node.appendChild(spanNode);
node.childNodes[0].childNodes[0].nodeValue=
(expDate.getTime()/1000);
}
if (timesCalled==timesToBeCalled){
var where = " on my Tivo";
if (document.getElementById("selTiVos" )){
var tivo_list = document.getElementById
("selTiVos" );
where = " in my "+tivo_list.options
[tivo_list.selectedIndex].childNodes[0].nodeValue
}
document.title="Now Playing"+where;
if (document.getElementById('exp'))
document.getElementById('exp').className = 'sort';
}
}
}
}
}
function convertDates(){
var tblNP = document.getElementById('nowPlay');
for (i = 0; i < tblNP.rows.length; i++) {
var hexDate = tblNP.rows[i].cells[3].childNodes[1].nodeValue;
var d=new Date((parseInt(hexDate, 16))*1000+2000);
var weekday=new Array
("Sun","Mon","Tue","Wed","Thu","Fri","Sat" );
var newValue =weekday[d.getDay()]+' '+(d.getMonth()+1)
+'/'+d.getDate();
tblNP.rows[i].cells[3].childNodes[1].nodeValue = newValue;
var di = document.createElement("div" );
var tn = document.createTextNode(getClockTime(d));
di.appendChild(tn);
tblNP.rows[i].cells[3].appendChild(di);
}
if (document.getElementById('suggest')) {
var tblSu = document.getElementById('suggest');
for (i = 0; i < tblSu.rows.length; i++) {
var hexDate = tblSu.rows[i].cells[2].childNodes
[1].nodeValue;
var d=new Date((parseInt(hexDate, 16))*1000+2000);
var weekday=new Array
("Sun","Mon","Tue","Wed","Thu","Fri","Sat" );
var newValue =weekday[d.getDay()]+' '+(d.getMonth()+1)
+'/'+d.getDate();
tblSu.rows[i].cells[2].childNodes[1].nodeValue = newValue;
var di = document.createElement("div" );
var tn = document.createTextNode(getClockTime(d));
di.appendChild(tn);
tblSu.rows[i].cells[2].appendChild(di);
}
}
}
function getClockTime(d)
{
var hour = d.getHours();
var minute = d.getMinutes();
var ap = "A";
if (hour > 11) { ap = "P";}
if (hour > 12) { hour = hour - 12; }
if (hour == 0) { hour = 12; }
if (minute < 10) { minute = "0" + minute; }
var timeString = hour + ':' + minute +ap;
return timeString;
}
function calcTimeLeft(){
var used = document.body.getElementsByTagName('i')[0].childNodes
[0].nodeValue;
if (totalGB>used) {
var leftGB = totalGB - used;
var hoursLeft = leftGB * 1073741824/475354/3600;
var ho = Math.floor(hoursLeft);
var min = Math.round((hoursLeft - ho)*60);
var h2 = document.createElement("h2" );
var tn = document.createTextNode('~ '+ho+'hr '+min+'min TimeLeft
(@High)');
h2.appendChild(tn);
document.body.getElementsByTagName('h1')[0].appendChild(h2);
}
}
function sortTable(col, tableBody) {
var tblEl = document.getElementById(tableBody);
if (tblEl.reverseSort == null) tblEl.reverseSort = new Array();
if (col == tblEl.lastColumn) tblEl.reverseSort[col] = !
tblEl.reverseSort[col];
tblEl.lastColumn = col;
var oldDsply = tblEl.style.display;
tblEl.style.display = "none";
var tmpEl, i, j, minVal, minIdx, testVal, cmp;
for (i = 0; i < tblEl.rows.length - 1; i++) {
minIdx = i;
minVal = tblEl.rows[i].cells[col].childNodes[0].childNodes
[0].nodeValue;
for (j = i + 1; j < tblEl.rows.length; j++) {
testVal = tblEl.rows[j].cells[col].childNodes[0].childNodes
[0].nodeValue;
cmp = compareValues(minVal, testVal);
if (tblEl.reverseSort[col])
cmp = -cmp;
if (cmp > 0) {
minIdx = j;
minVal = testVal;
}
}
if (minIdx > i) {
tmpEl = tblEl.removeChild(tblEl.rows[minIdx]);
tblEl.insertBefore(tmpEl, tblEl.rows[i]);
}
}
tblEl.style.display = oldDsply;
}
function compareValues(v1, v2) {
var f1, f2;
if (v1.substring(0,4)=='The ') v1=v1.substring(4);
if (v1.substring(0,2)=='A ') v1=v1.substring(2);
if (v1.substring(0,2)=='0x'){
f1 = parseInt(v1,16);
f2 = parseInt(v2,16);
} else {
f1= parseInt(v1);
f2=parseInt(v2);
}
if (!isNaN(f1) && !isNaN(f2)) {
v1 = f1;
v2 = f2;
}
if (v1 == v2) return 0;
if (v1 > v2) return 1
return -1;
}
function showNowRecordingDetails(urlend){
var tivo_ip = tivo[0][1];
if (document.getElementById("selTiVos" )){
var tivo_list = document.getElementById("selTiVos" );
tivo_ip = tivo_list.options[tivo_list.selectedIndex].value;
}
if (document.getElementById("nowRec" ).childNodes
[0].nodeValue=="show" ){
document.getElementById("nowRec" ).childNodes
[0].nodeValue="hide";
var xsltProcessor = new XSLTProcessor();
var xsltSheet = document.getElementsByTagNameNS
('http://www.w3.org/1999/XSL/Transform', 'stylesheet')[1];
xsltProcessor.importStylesheet(xsltSheet);
var myXMLHTTPRequest = new XMLHttpRequest();
netscape.security.PrivilegeManager.enablePrivilege
('UniversalBrowserRead');
myXMLHTTPRequest.open("GET", 'https://'+tivo_ip+urlend,
false,'tivo',mak);
myXMLHTTPRequest.send(null);
xmlDoc = myXMLHTTPRequest.responseXML;
var fragment = xsltProcessor.transformToFragment(xmlDoc,
document);
var nr=document.getElementById("recDesc" );
nr.appendChild(fragment);
} else {
var nr=document.getElementById("recDesc" );
nr.removeChild(nr.lastChild);
document.getElementById("nowRec" ).childNodes
[0].nodeValue="show";
}
}
function showDetails(showNum){
var tivo_ip = tivo[0][1];
if (document.getElementById("selTiVos" )){
var tivo_list = document.getElementById("selTiVos" );
tivo_ip = tivo_list.options[tivo_list.selectedIndex].value;
}
if (document.getElementById('SH'+showNum).childNodes
[0].nodeValue=="show" ){
var xsltProcessor = new XSLTProcessor();
var xsltSheet = document.getElementsByTagNameNS
('http://www.w3.org/1999/XSL/Transform', 'stylesheet')[1];
xsltProcessor.importStylesheet(xsltSheet);
var myXMLHTTPRequest = new XMLHttpRequest();
netscape.security.PrivilegeManager.enablePrivilege
('UniversalBrowserRead');
myXMLHTTPRequest.open("GET",
'https://'+tivo_ip+'/TiVoVideoDetails?id='+showNum, false,'tivo',mak);
myXMLHTTPRequest.send(null);
xmlDoc = myXMLHTTPRequest.responseXML;
var fragment = xsltProcessor.transformToFragment(xmlDoc,
document);
var row=document.getElementById(showNum);
row.childNodes[1].appendChild(fragment);
document.getElementById('SH'+showNum).childNodes
[0].nodeValue="hide";
You are about to answer a thread that has been inactive for more than 6 months. If you still wish to proceed, please ensure that your posting is original and does not duplicate or overlap any prior responses to this thread.