Tivo Desktop Problem

G

Guest

Guest
Archived from groups: alt.video.ptv.tivo (More info?)

I'm using a Humax 80hr with DVD-r. I have Tivo Desktop set up on my
PC, and it is working (Or at least, I am able to serve pictures and
music to the Tivo). The only problem is that on the tivo desktop now
of the movies in my now playing list show up in the tivo desktop list.
I've installed the proper codecs from www.free-codecs.com. Any help
will be appreciated. Thanks.
 

Howard

Distinguished
Feb 13, 2001
438
0
18,930
Archived from groups: alt.video.ptv.tivo (More info?)

GTD <duuh@stoopid.net> wrote in news:u51ie1tjc3nr06rvgrbg9q3fvqrpsebem8@
4ax.com:

> I'm using a Humax 80hr with DVD-r. I have Tivo Desktop set up on my
> PC, and it is working (Or at least, I am able to serve pictures and
> music to the Tivo). The only problem is that on the tivo desktop now
> of the movies in my now playing list show up in the tivo desktop list.
> I've installed the proper codecs from www.free-codecs.com. Any help
> will be appreciated. Thanks.

To my knowledge, the DVD recorders don't have TTG yet.

http://www.tivo.com/4.9.19.3.asp#6


--
Minister of All Things Digital & Electronic, and Holder of Past Knowledge
stile99@email.com. Cabal# 24601-fnord | Sleep is irrelevant.
I speak for no one but myself, and |Caffeine will be assimilated.
no one else speaks for me. O- | Decaf is futile.
 
G

Guest

Guest
Archived from groups: alt.video.ptv.tivo (More info?)

On 28 Jul 2005 17:09:42 GMT, Howard <stile99@email..com> wrote:

>GTD <duuh@stoopid.net> wrote in news:u51ie1tjc3nr06rvgrbg9q3fvqrpsebem8@
>4ax.com:
>
>> I'm using a Humax 80hr with DVD-r. I have Tivo Desktop set up on my
>> PC, and it is working (Or at least, I am able to serve pictures and
>> music to the Tivo). The only problem is that on the tivo desktop now
>> of the movies in my now playing list show up in the tivo desktop list.
>> I've installed the proper codecs from www.free-codecs.com. Any help
>> will be appreciated. Thanks.
>
>To my knowledge, the DVD recorders don't have TTG yet.
>
>http://www.tivo.com/4.9.19.3.asp#6

I see. I didn't realize The Tivo Desktop and TTG were one in the same.
Thanks.
 
G

Guest

Guest
Archived from groups: alt.video.ptv.tivo (More info?)

GTD wrote:
> On 28 Jul 2005 17:09:42 GMT, Howard <stile99@email..com> wrote:
>
>
>>GTD <duuh@stoopid.net> wrote in news:u51ie1tjc3nr06rvgrbg9q3fvqrpsebem8@
>>4ax.com:
>>
>>
>>>I'm using a Humax 80hr with DVD-r. I have Tivo Desktop set up on my
>>>PC, and it is working (Or at least, I am able to serve pictures and
>>>music to the Tivo). The only problem is that on the tivo desktop now
>>>of the movies in my now playing list show up in the tivo desktop list.
>>>I've installed the proper codecs from www.free-codecs.com. Any help
>>>will be appreciated. Thanks.
>>
>>To my knowledge, the DVD recorders don't have TTG yet.
>>
>>http://www.tivo.com/4.9.19.3.asp#6
>
>
> I see. I didn't realize The Tivo Desktop and TTG were one in the same.
> Thanks.
>

They aren't, but the portion of Tivo Desktop that you are trying to use
is. TTG consists of transferring shows from your Tivo to your computer.
Everything else is still available.

Randy S.
 

Jason

Distinguished
Jul 25, 2003
250
0
18,930
Archived from groups: alt.video.ptv.tivo (More info?)

On Thu, 28 Jul 2005 23:11:09 -0400, Randy S. wrote:

>GTD wrote:
>> On 28 Jul 2005 17:09:42 GMT, Howard <stile99@email..com> wrote:
>>
>>>GTD <duuh@stoopid.net> wrote in news:u51ie1tjc3nr06rvgrbg9q3fvqrpsebem8@
>>>4ax.com:
>>>
>>>>I'm using a Humax 80hr with DVD-r. I have Tivo Desktop set up on my
>>>>PC, and it is working (Or at least, I am able to serve pictures and
>>>>music to the Tivo). The only problem is that on the tivo desktop now
>>>>of the movies in my now playing list show up in the tivo desktop list.
>>>>I've installed the proper codecs from www.free-codecs.com. Any help
>>>>will be appreciated. Thanks.
>>>
>>>To my knowledge, the DVD recorders don't have TTG yet.
>>>http://www.tivo.com/4.9.19.3.asp#6
>>
>> I see. I didn't realize The Tivo Desktop and TTG were one in the same.
>> Thanks.
>
>They aren't, but the portion of Tivo Desktop that you are trying to use
>is. TTG consists of transferring shows from your Tivo to your computer.
> Everything else is still available.
>Randy S.

Does the series2 web server exist in the humax as well? Does
anyone know if it is different somehow?

My pc and tivo are on the same home network. In a browser I can
plug in the IP number the tivo has and get a webpage.
http://192.168.2.4/ gives me a 'Congratulations!
You've successfully connected your TiVo box to your home network,
enabling a number of exciting new Home Media features:"

if I change that to https://192.168.2.4/ I get a dialog box, user
is tivo, password is your media access key, and I am shown the
contents of the tivo.

I found a sweet browser file on the tivocommunity forum that I
will share now...
 

Jason

Distinguished
Jul 25, 2003
250
0
18,930
Archived from groups: alt.video.ptv.tivo (More info?)

On Fri, 29 Jul 2005 03:54:59 -0400, Jason wrote:
>
>I found a sweet browser file on the tivocommunity forum that I
>will share now...

Is it me, or did it not show up?

Let's try again:

<!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);



DELETE THESE LINES, and save this to a new filename. You must make sure that the
end result filename ends with a .xhtml, or it won't work. If something is going wrong,
check if you have windows set to 'hide extensions for known file types'.
Short version of what that does, it hides the true nature of the files you are looking
at in your folders. For instance, you could be thinking you are looking at a picture
names Mom.jpg and it could really be a virus named Mom.jpg.exe Bad.
I found this file on the tivo community forum. Go there for more info, I don't have it.

The little section just below here is where you plug in the info for your tivo.
the 'Living Room' in the only place you have to change IP NUMBER HERE to a number.
You can find your tivo's ip number in the network section, where it says IP on the
upper right part of the screen. Don't get rid of the " quotes.
The number after the comma is the size of your drive. Parts of this file do math and
figure out how much space you have left on your drive. SWEET!
Put your media access key where it says YOUR MAK HERE, you can find it in the system
menus in your tivo.

Go thank the folks at tivocomunnity.com for this.
If you have more than 1 tivo, then fill in the number and size bits for tivi[1] and
get rid of the 2 little // in front of the line, that will activate that line of code.

Yes, you can change the words inside the "quotes", just don't get rid of the "".
STOP DELETING HERE




tivo[0]=[ "Living Room","IP NUMBER HERE", 80 ];
//[ "Location" , "Tivo's IP" , total gigabytes used to record shows ]
//tivo[1]=[ "Master Bedroom" , "IP NUMBER HERE" , 29.25 ];
//tivo[2]=[ "Den" ,"IP NUMBER HERE" , 69.25 ];
//tivo[3]=[ "Kitchen" , "IP NUMBER HERE" , 109.25 ];
//tivo[4]=[ "Bathroom" , "IP NUMBER HERE" , 0 ];

var mak='YOUR MAK HERE'; //your media access key







var totalGB = tivo[0][2];
var numExpDReqFilled = 0;
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){
o = document.createElement('option');
o.setAttribute('value',tivo[1]);
oTN = document.createTextNode(tivo[0]);
o.appendChild(oTN);
s.appendChild(o);
}
}
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;
totalGB = tivo[tivo_list.selectedIndex][2];
}
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();
if (document.getElementById("nRI")) getNowRecInfo(tivo_ip);
var tblNP = document.getElementById('nowPlay');
for (i = 0; i < tblNP.rows.length; i++) {
getExpDate(tivo_ip, tblNP.rows.cells[2], tblNP.rows.length);
}
if (document.getElementById("selTiVos")){
document.getElementById("selTiVos").removeAttribute('disabled');
}
}
}
}
function getNowRecInfo(tivo_ip){
var nRSpan = document.getElementById("nRI");
var vd = nRSpan.childNodes[0].nodeValue;
var myXMLHTTPRequest = new XMLHttpRequest();
netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');
myXMLHTTPRequest.open("GET", 'https://'+tivo_ip+vd, true,'tivo',mak);
myXMLHTTPRequest.send(null);
myXMLHTTPRequest.onreadystatechange=function() {
if (myXMLHTTPRequest.readyState==4) {
if (myXMLHTTPRequest.status!=200){
getNowRecInfo(tivo_ip);
} else {
netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');
var responseText = myXMLHTTPRequest.responseText;
var zuluTime = responseText.match( /<expirationTime>(.+)<\/expirationTime>/ );
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();
expDate = d+" "+getClockTime(expDate)
var quality = responseText.match( /<recordingQuality.+>(.+)<\/recordingQuality>/);
if (quality[1]=="GOOD") quality[1]="BASIC";
var recDur = responseText.match( /<recordedDuration>(.+)<\/recordedDuration>/ );
var dur = responseText.match( /<showing>.+<duration>(.+?)<\/duration>/ );
nRSpan.childNodes[0].nodeValue="Quality: "+quality[1]+" | Partialness: "
+recDur[1].substring(2)+" of "+dur[1].substring(2)
+" | Will Expire: "+expDate+"}";
nRSpan.className = '';
}
}
}
}
function getExpDate(tivo_ip, node, 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, timesToBeCalled);
} else {
numExpDReqFilled++;
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 (numExpDReqFilled==timesToBeCalled){
numExpDReqFilled = 0
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.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.cells[3].childNodes[1].nodeValue = newValue;
var di = document.createElement("div");
var tn = document.createTextNode(getClockTime(d));
di.appendChild(tn);
tblNP.rows.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.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.cells[2].childNodes[1].nodeValue = newValue;
var di = document.createElement("div");
var tn = document.createTextNode(getClockTime(d));
di.appendChild(tn);
tblSu.rows.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 bestHoursLeft = leftGB * 1073741824/763712/3600;
var bestHo = Math.floor(bestHoursLeft);
var bestMin = Math.round((bestHoursLeft - bestHo)*60);
var highHoursLeft = leftGB * 1073741824/475354/3600;
var highHo = Math.floor(highHoursLeft);
var highMin = Math.round((highHoursLeft - highHo)*60);
var medHoursLeft = leftGB * 1073741824/361759/3600;
var medHo = Math.floor(medHoursLeft);
var medMin = Math.round((medHoursLeft - medHo)*60);
var basHoursLeft = leftGB * 1073741824/213210/3600;
var basHo = Math.floor(basHoursLeft);
var basMin = Math.round((basHoursLeft - basHo)*60);
var h2 = document.createElement("h2");
var tn = document.createTextNode('TimeLeft: ~ '
+bestHo+'hr '+bestMin+'min (@Best) || '
+highHo+'hr '+highMin+'min (@High) || '
+medHo+'hr '+medMin+'min (@Medium) || '
+basHo+'hr '+basMin+'min (@Basic)');
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.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);
}
}
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 (v2.substring(0,4)=='The ') v2=v2.substring(4);
if (v2.substring(0,2)=='A ') v2=v2.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";

} else {
var row=document.getElementById(showNum);
row.childNodes[1].removeChild(row.childNodes[1].lastChild);
document.getElementById('SH'+showNum).childNodes[0].nodeValue="show";
}
}
function showSuggTable() {
if (document.getElementById("suggShowHide").childNodes[0].nodeValue=="show"){
document.getElementById("suggTable").style.display="block";
document.getElementById("suggShowHide").childNodes[0].nodeValue="hide"
} else {
document.getElementById("suggTable").style.display="none";
document.getElementById("suggShowHide").childNodes[0].nodeValue="show"
}
}

]]>
</script>

<style type="text/css">
body { font-family: sans-serif }
a.sh { cursor: pointer; color:#0000ff }
a.search{ text-decoration:none;color:#000000}
a.search:hover { color:#0000ff;text-decoration:underline}
a.sort { cursor: pointer; color:#000000 }
a.sort:hover { color:#790619}
.sortBy {display:none}
.cantSortYet { color:#ffffff }
.nRDisplayHide {display:none }
h1 { font-size: large }
h2 { font-size: medium }
tr { font-size: small }
th { font-size: small; padding: 7px }
td { font-size: small; padding: 7px }
</style>

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:t="http://www.tivo.com/developer/calypso-protocol-1.5/">
<xsl:eek:utput method="html"/>

<xsl:template match="/">

<xsl:for-each select="t:TiVoContainer/t:Item[t:Details/t:InProgress]">
<xsl:variable name="vd" select="t:Links/t:TiVoVideoDetails/t:Url"/>
<span style="font-size:large"><b>Now Recording</b></span><br/>
<b>
<xsl:value-of select="t:Details/t:SourceStation"/> Ch. 
<xsl:value-of select="substring-before(t:Details/t:SourceChannel,'-0')"/>

<xsl:value-of select="t:Details/t:Title"/>
<xsl:if test="t:Details/t:EpisodeTitle">: "<xsl:value-of select="t:Details/t:EpisodeTitle"/>"</xsl:if>
</b>
 
<span style="font-family:courier">[<b>details:</b>
<a class='sh' onclick="showNowRecordingDetails('{$vd}')">
<xsl:attribute name="id">nowRec</xsl:attribute>show</a>]
</span>
<br/>
<span style="font-size:small">
<b>
<xsl:choose>
<xsl:when test="../t:Item[1]/t:Details/t:InProgress"> {Planned | </xsl:when>
<xsl:eek:therwise> {Suggestion | </xsl:eek:therwise>
</xsl:choose>
<span class="nRDisplayHide">
<xsl:attribute name="id">nRI</xsl:attribute>
<xsl:value-of select="$vd"/></span>
</b>
</span>

<br/>
<span>
<xsl:attribute name="id">recDesc</xsl:attribute>
<xsl:value-of select="t:Details/t:Description"/></span>
<hr></hr>
</xsl:for-each>

<h1>4485732656 Now Playing -
<xsl:value-of select="count(t:TiVoContainer/t:Item[not(t:Details/t:InProgress
or t:Links/t:CustomIcon/t:Url=
'urn:tivo:image:suggestion-recording')])"/>
 Shows
<xsl:variable name="hr" select="floor(sum(//t:Duration[not(../t:InProgress
or ../../t:Links/t:CustomIcon/t:Url=
'urn:tivo:image:suggestion-recording')])
div 3600000)"/>
<xsl:variable name="min" select="(sum(//t:Duration[not(../t:InProgress
or ../../t:Links/t:CustomIcon/t:Url=
'urn:tivo:image:suggestion-recording')])
div 3600000)-$hr"/>
(<xsl:value-of select="$hr"/>hr
<xsl:value-of select="round($min*6000 div 100)"/>min using
<b><i>
<xsl:value-of select="round(sum(//t:SourceSize[not(../t:InProgress
or ../../t:Links/t:CustomIcon/t:Url=
'urn:tivo:image:suggestion-recording')])
div 1073741824 * 100) div 100"/>
</i></b><b>GB</b>)
</h1>

<table id='tab' style="width:100%;">
<thead>
<tr style="background-color:#E5E5C5;">
<th style="width:1%"><a class='sort' onclick="sortTable(0, 'nowPlay')">Source</a></th>
<th><a class='sort' onclick="sortTable(1, 'nowPlay')">Description</a></th>
<th style="width:5%"><a class='cantSortYet' onclick="sortTable(2, 'nowPlay')">
<xsl:attribute name="id">exp</xsl:attribute>Expires</a></th>
<th style="width:5%"><a class='sort' onclick="sortTable(3, 'nowPlay')">Captured</a></th>
<th style="width:5%"><a class='sort' onclick="sortTable(4, 'nowPlay')">Size</a></th>
<th style="width:5%"><a class='sort' onclick="sortTable(5, 'nowPlay')">Quality</a></th>
</tr>
</thead>
<tbody>
<xsl:attribute name="id">nowPlay</xsl:attribute>
<xsl:for-each select="t:TiVoContainer/t:Item[not(t:Details/t:InProgress
or t:Links/t:CustomIcon/t:Url='urn:tivo:image:suggestion-recording')]">
<xsl:variable name="showUrl" select="t:Links/t:TiVoVideoDetails/t:Url"/>
<xsl:variable name="showNum" select="substring-after($showUrl,'id=')"/>
<tr id="{$showNum}">
<td style="background-color:#fc0000;vertical-align:top;text-align:center;">
<span class="sortBy"><xsl:value-of select="t:Details/t:SourceStation"/></span>
<xsl:value-of select="t:Details/t:SourceStation"/><br/>
<xsl:value-of select="substring-before(t:Details/t:SourceChannel,'-0')"/>
</td>

<td style="background-color:#F5F595;vertical-align:top;text-align:left;">
<span class="sortBy"><xsl:value-of select="t:Details/t:Title"/></span>
<span style="float:right;font-family:courier">[<b>details:</b>
<a class='sh' id="SH{$showNum}" onclick="showDetails('{$showNum}')">show</a>]</span>
<xsl:choose>
<xsl:when test="t:Links/t:CustomIcon/t:Url=
'urn:tivo:image:save-until-i-delete-recording'">
<span style="background-color:#00ff00">
<b>
<xsl:value-of select="t:Details/t:Title"/>
<xsl:if test="t:Details/t:EpisodeTitle">: "<xsl:value-of select="t:Details/t:EpisodeTitle"/>"</xsl:if>
</b>
</span>
</xsl:when>
<xsl:eek:therwise>
<span style="color:#000000">
<b>
<xsl:value-of select="t:Details/t:Title"/>
<xsl:if test="t:Details/t:EpisodeTitle">: "<xsl:value-of select="t:Details/t:EpisodeTitle"/>"</xsl:if>
</b>
</span>
</xsl:eek:therwise>
</xsl:choose>

<br/>
<xsl:value-of select="t:Details/t:Description"/>
</td>
<td>
<xsl:attribute name="style">
background-color:#32c864;vertical-align:top;text-align:center
</xsl:attribute>
<span class="sortBy"><xsl:value-of select="$showNum"/></span>
</td>
<td>
<xsl:attribute name="style">
background-color:#32c864;vertical-align:top;text-align:center
</xsl:attribute>
<span class="sortBy"><xsl:value-of select="t:Details/t:CaptureDate"/></span>
<xsl:value-of select="t:Details/t:CaptureDate"/>
</td>



<xsl:variable name="dur" select="t:Details/t:Duration div 3600000"/>
<xsl:variable name="hr" select="floor($dur)"/>
<xsl:variable name="min" select="round((($dur)-($hr))*60)"/>

<td style="background-color:#fe9900;vertical-align:top;text-align:center;">
<span class="sortBy"><xsl:value-of select="t:Details/t:SourceSize"/></span>
<xsl:choose>
<xsl:when test="$min = 60">
<xsl:value-of select="$hr+1"/>:00</xsl:when>
<xsl:eek:therwise>
<xsl:value-of select="$hr"/>:<xsl:if test="$min < 10">0</xsl:if><xsl:value-of select="$min"/>
</xsl:eek:therwise>
</xsl:choose>
<br/>
<xsl:variable name="download" select="t:Links/t:Content/t:Url"/>
<a href='{$download}'>
<xsl:value-of select="round(t:Details/t:SourceSize div 1024 div 1024)"/></a> MB
</td>

<td style="background-color:#6565ca;vertical-align:top;text-align:center;">
<xsl:variable name="bs" select="t:Details/t:SourceSize div
(t:Details/t:Duration div 1000)"/>
<xsl:variable name="qual">
<xsl:choose>
<xsl:when test="$bs > 600000">Best</xsl:when>
<xsl:when test="$bs > 400000 and $bs < 600000">High</xsl:when>
<xsl:when test="$bs > 300000 and $bs < 400000">Medium</xsl:when>
<xsl:eek:therwise>Basic</xsl:eek:therwise>
</xsl:choose>
</xsl:variable>
<span class="sortBy"><xsl:value-of select="$qual"/></span>
<b><xsl:value-of select="$qual"/></b>
</td>

</tr>
</xsl:for-each>
</tbody>
</table>


<xsl:variable name="numSugg" select="count(t:TiVoContainer/t:Item
[t:Links/t:CustomIcon/t:Url='urn:tivo:image:suggestion-recording'])"/>
<xsl:if test="$numSugg > 0">
<hr></hr>
<b id="ts">TiVo Suggestions: </b>
<xsl:value-of select="$numSugg"/>
 Shows  
<span style="font-family:courier">[<a class='sh' onclick="showSuggTable()">
<xsl:attribute name="id">suggShowHide</xsl:attribute>show</a>]</span><br/>
<table style="display:none;width:100%">
<xsl:attribute name="id">suggTable</xsl:attribute>
<thead>
<tr style="background-color:#E5E5C5;">
<th style="width:1%"><a class='sort' onclick="sortTable(0, 'suggest')">Source</a></th>
<th><a class='sort' onclick="sortTable(1, 'suggest')">Description</a></th>
<th style="width:5%"><a class='sort' onclick="sortTable(2, 'suggest')">Captured</a></th>
<th style="width:5%"><a class='sort' onclick="sortTable(3, 'suggest')">Size</a></th>
<th style="width:5%"><a class='sort' onclick="sortTable(4, 'suggest')">Quality</a></th>
</tr>
</thead>
<tbody>
<xsl:attribute name="id">suggest</xsl:attribute>
<xsl:variable name="numNowPlay" select="count(t:TiVoContainer/t:Item[not(t:Details/t:InProgress
or t:Links/t:CustomIcon/t:Url=
'urn:tivo:image:suggestion-recording')])"/>
<xsl:for-each select="t:TiVoContainer/t:Item
[t:Links/t:CustomIcon/t:Url='urn:tivo:image:suggestion-recording']">
<xsl:sort select="t:Details/t:Title"/>
<xsl:variable name="showUrl" select="t:Links/t:TiVoVideoDetails/t:Url"/>
<xsl:variable name="showNum" select="substring-after($showUrl,'id=')"/>
<tr id="{$showNum}">
<td style="width:1%;background-color:#fc0000;vertical-align:top;text-align:center;">
<span class="sortBy"><xsl:value-of select="t:Details/t:SourceStation"/></span>
<xsl:value-of select="t:Details/t:SourceStation"/>
<br/>
<xsl:value-of select="substring-before(t:Details/t:SourceChannel,'-0')"/>
</td>

<td style="background-color:#F5F595;vertical-align:top;text-align:left;">
<span class="sortBy"><xsl:value-of select="t:Details/t:Title"/></span>
<xsl:variable name="vd" select="t:Links/t:TiVoVideoDetails/t:Url"/>
<span style="float:right;font-family:courier">[<b>details:</b>
<a class='sh' id="SH{$showNum}" onclick="showDetails('{$showNum}')">show</a>]</span>
<xsl:choose>
<xsl:when test="t:Links/t:CustomIcon/t:Url=
'urn:tivo:image:save-until-i-delete-recording'">
<span style="background-color:#00ff00">
<b><xsl:value-of select="t:Details/t:Title"/>
<xsl:if test="t:Details/t:EpisodeTitle">: "<xsl:value-of select="t:Details/t:EpisodeTitle"/>"</xsl:if>
</b>
</span>
</xsl:when>
<xsl:eek:therwise>
<span style="color:#000000">
<b>
<xsl:value-of select="t:Details/t:Title"/>
<xsl:if test="t:Details/t:EpisodeTitle">: "<xsl:value-of select="t:Details/t:EpisodeTitle"/>"</xsl:if>
</b>
</span>
</xsl:eek:therwise>
</xsl:choose>

<br/>
<xsl:value-of select="t:Details/t:Description"/>
</td>

<td >
<xsl:attribute name="style">
width:5%;background-color:#32c864;vertical-align:top;text-align:center
</xsl:attribute>
<span class="sortBy"><xsl:value-of select="t:Details/t:CaptureDate"/></span>
<xsl:value-of select="t:Details/t:CaptureDate"/>
</td>


<xsl:variable name="dur" select="t:Details/t:Duration div 3600000"/>
<xsl:variable name="hr" select="floor($dur)"/>
<xsl:variable name="min" select="round((($dur)-($hr))*60)"/>

<td style="width:5%;background-color:#fe9900;vertical-align:top;text-align:center;">
<span class="sortBy"><xsl:value-of select="t:Details/t:SourceSize"/></span>
<xsl:choose>
<xsl:when test="$min = 60">
1:00
</xsl:when>
<xsl:eek:therwise>
<xsl:value-of select="$hr"/>:<xsl:if test="$min < 10">0</xsl:if>
<xsl:value-of select="$min"/>
</xsl:eek:therwise>
</xsl:choose>
<br/>
<xsl:variable name="download" select="t:Links/t:Content/t:Url"/>
<a href='{$download}'>
<xsl:value-of select="round(t:Details/t:SourceSize div 1024 div 1024)"/></a> MB
</td>

<td style="width:5%;background-color:#6565ca;vertical-align:top;text-align:center;">
<xsl:variable name="bs" select="t:Details/t:SourceSize div
(t:Details/t:Duration div 1000)"/>
<xsl:variable name="qual">
<xsl:choose>
<xsl:when test="$bs > 600000">Best</xsl:when>
<xsl:when test="$bs > 400000 and $bs < 600000">High</xsl:when>
<xsl:when test="$bs > 300000 and $bs < 400000">Medium</xsl:when>
<xsl:eek:therwise>Basic</xsl:eek:therwise>
</xsl:choose>
</xsl:variable>
<span class="sortBy"><xsl:value-of select="$qual"/></span>
<b><xsl:value-of select="$qual"/></b>
</td>
</tr>
</xsl:for-each>
</tbody>
</table>
</xsl:if>

</xsl:template>
</xsl:stylesheet>

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:TvBusMarshalledStruct="http://tivo.com/developer/xml/idl/TvBusMarshalledStruct">
<xsl:eek:utput method="html"/>
<xsl:template match="/TvBusMarshalledStruct:TvBusEnvelope">
<xsl:variable name="oAD" select="showing/program/originalAirDate"/>
<xsl:variable name="expD" select="expirationTime"/>
<xsl:variable name="bkMk" select="vBookmark/element/time"/>
<table style="background-color:#FFFF7E;border-top: 2px solid #000000;border-left: 2px solid #000000;width:100%;">
<tr>

<td style="padding: 2px;width:200px;vertical-align: top;text-align:left">
Watched so far: <xsl:choose>
<xsl:when test="vBookmark/element">
<b>
<xsl:variable name="wsf" select="translate(substring-after
(substring-before($bkMk,'M'),'PT'),'H','h')"/>
<xsl:choose>
<xsl:when test="$wsf"><xsl:value-of select="$wsf"/></xsl:when>
<xsl:eek:therwise><1</xsl:eek:therwise>
</xsl:choose>min</b>
</xsl:when>
<xsl:eek:therwise>(None)</xsl:eek:therwise>
</xsl:choose><br/>

<xsl:if test="showing/program/originalAirDate">
Original Air Date: <b>
<xsl:value-of select="translate(concat(substring($oAD,6,5),'-',substring($oAD,1,4)),'-','/')"/>
</b>
</xsl:if>
<br/>
<xsl:if test="showing/program/episodeNumber">
Episode Number: 
<xsl:value-of select="showing/program/episodeNumber"/>
<br/>
</xsl:if>
</td>

<td style="padding: 2px;vertical-align: top">
<xsl:if test="showing/program/vProgramGenre">
Genre: 
<xsl:for-each select="showing/program/vProgramGenre/element">
<xsl:value-of select="."/>
<xsl:if test="position()!=last()">, </xsl:if>
</xsl:for-each>
<br/>
</xsl:if>
<xsl:if test="showing/program/movieYear">
Year: 
<xsl:value-of select="showing/program/movieYear"/>
<br/>
</xsl:if>
<xsl:if test="showing/program/mpaaRating">
Rated: 
<xsl:value-of select="showing/program/mpaaRating"/>
</xsl:if>
</td>
</tr>

<xsl:if test="showing/program/vActor/element">
<tr><td colspan="2" style="padding: 2px">
<u>Actors</u>: 
<xsl:for-each select="showing/program/vActor/element">
<xsl:variable name="fname" select="substring-after(.,'|')"/>
<xsl:variable name="lname" select="substring-before(.,'|')"/>
<xsl:variable name="nam">
<xsl:value-of select="concat($fname,' ',$lname)"/>
</xsl:variable>
<a class='search' href="http://www.imdb.com/Find?for={$fname}%20{$lname}&select=People">
<xsl:value-of select="$nam"/></a>
<xsl:if test="position()!=last()">, </xsl:if>
</xsl:for-each>
</td></tr>
</xsl:if>

<xsl:if test="showing/program/vGuestStar/element">
<tr><td colspan="2" style="padding: 2px">
<u>Guest Stars</u>: 
<xsl:for-each select="showing/program/vGuestStar/element">
<xsl:variable name="fname" select="substring-after(.,'|')"/>
<xsl:variable name="lname" select="substring-before(.,'|')"/>
<xsl:variable name="nam">
<xsl:value-of select="concat($fname,' ',$lname)"/>
</xsl:variable>
<a class='search' href="http://www.imdb.com/Find?for={$fname}%20{$lname}&select=People">
<xsl:value-of select="$nam"/></a>
<xsl:if test="position()!=last()">, </xsl:if>
</xsl:for-each>
</td></tr>
</xsl:if>

<xsl:if test="showing/program/vHost/element">
<tr><td colspan="2" style="padding: 2px">
<u>Host</u>: 
<xsl:for-each select="showing/program/vHost/element">
<xsl:variable name="fname" select="substring-after(.,'|')"/>
<xsl:variable name="lname" select="substring-before(.,'|')"/>
<xsl:variable name="nam">
<xsl:value-of select="concat($fname,' ',$lname)"/>
</xsl:variable>
<a class='search' href="http://www.imdb.com/Find?for={$fname}%20{$lname}&select=People">
<xsl:value-of select="$nam"/></a>
<xsl:if test="position()!=last()">, </xsl:if>
</xsl:for-each>
</td></tr>
</xsl:if>

<xsl:if test="showing/program/vDirector/element">
<tr><td colspan="2" style="padding: 2px">
<u>Directed by</u>: 
<xsl:for-each select="showing/program/vDirector/element">
<xsl:variable name="fname" select="substring-after(.,'|')"/>
<xsl:variable name="lname" select="substring-before(.,'|')"/>
<xsl:variable name="nam">
<xsl:value-of select="concat($fname,' ',$lname)"/>
</xsl:variable>
<a class='search' href="http://www.imdb.com/Find?for={$fname}%20{$lname}&select=People">
<xsl:value-of select="$nam"/></a>
<xsl:if test="position()!=last()">, </xsl:if>
</xsl:for-each>
</td></tr>
</xsl:if>

<xsl:if test="showing/program/vWriter/element">
<tr><td colspan="2" style="padding: 2px">
<u>Written by</u>: 
<xsl:for-each select="showing/program/vWriter/element">
<xsl:variable name="fname" select="substring-after(.,'|')"/>
<xsl:variable name="lname" select="substring-before(.,'|')"/>
<xsl:variable name="nam">
<xsl:value-of select="concat($fname,' ',$lname)"/>
</xsl:variable>
<a class='search' href="http://www.imdb.com/Find?for={$fname}%20{$lname}&select=People">
<xsl:value-of select="$nam"/></a>
<xsl:if test="position()!=last()">, </xsl:if>
</xsl:for-each>
</td></tr>
</xsl:if>

<xsl:if test="showing/program/vExecProducer/element">
<tr><td colspan="2" style="padding: 2px">
<u>Exec. Produced by</u>: 
<xsl:for-each select="showing/program/vExecProducer/element">
<xsl:variable name="fname" select="substring-after(.,'|')"/>
<xsl:variable name="lname" select="substring-before(.,'|')"/>
<xsl:variable name="nam">
<xsl:value-of select="concat($fname,' ',$lname)"/>
</xsl:variable>
<a class='search' href="http://www.imdb.com/Find?for={$fname}%20{$lname}&select=People">
<xsl:value-of select="$nam"/></a>
<xsl:if test="position()!=last()">, </xsl:if>
</xsl:for-each>
</td></tr>
</xsl:if>

</table>
</xsl:template>
</xsl:stylesheet>

</head>
<body>
</body>
</html>