# New TiVoWeb Module : ChannelGrid



## cwingert

I created a new TiVoWeb module that allows the user to see a single channel's programming data for a week.

The grid displays day on the x-axis and time on the y-axis.

This allows the user to look at all programming for a favorite channel.

As a shortcoming Schedule/Program loading time is somewhat long, but I have found some cool programs on my favorite channels by looking at the programming data in this format.

Drop it in your modules directory and do a Restart -> Quick Reload.

BTW - This module was developed on version 2.5 software, so YMMV.

This code is based on schedule.itcl by David Lowe and logos.itcl by Jake B.


----------



## jberman

Works great on 3.0 Philips SA running TivoWeb 1.9.5. Great idea for a module, thank you! :up:

Would be even better if the module could show program description on mouseover of the program title (you'd have to output the show description in the title attribute of each of the links - that might slow down the module load time though).


----------



## cwingert

I'll add it if there is enough interest



> _Originally posted by jberman _
> *Works great on 3.0 Philips SA running TivoWeb 1.9.5. Great idea for a module, thank you! :up:
> 
> Would be even better if the module could show program description on mouseover of the program title (you'd have to output the show description in the title attribute of each of the links - that might slow down the module though). *


----------



## deebo

This is excelent, It works much better for through searching a certain channel than the existing, channel guide module. I also think it would be nice if you could mouse over and get the description.
-David


----------



## rrr22777

thank you. thank you. thank you.

up until now i have been selecting the channel and then clicking next, next ... 

cant wait to get home so i can load this module.


----------



## propman07

> _Originally posted by jberman _
> *Works great on 3.0 Philips SA running TivoWeb 1.9.5. Great idea for a module, thank you! :up:
> 
> Would be even better if the module could show program description on mouseover of the program title (you'd have to output the show description in the title attribute of each of the links - that might slow down the module load time though). *


Hi-

I'm getting ready to install my TivoWeb card for my SAT-T60, so I have been spending more time checking the boards for activity. I thought that the lates version of TivoWeb was 1.9.4. I was just curious where 1.9.5 came from.

TIA


----------



## A.C.

> I thought that the lates version of TivoWeb was 1.9.4. I was just curious where 1.9.5 came from.


Yeah me too!!!


----------



## cwingert

I was thinking that an EPG (maybe a 3 - 4 hour layout) would be nice too. Anybody ever look into this? 

Loading time may suck even more though, I'm not sure if it is worth it.

It would be fun to try if TCL wasn't such a pain, its funny how you miss strong typing when it is gone. Running through the database to get data is painful too. Might not be a bad idea to export the database to a PC for crap like this.


----------



## gamehendge2000

is awesome thanks!


----------



## disco

Anyone have a screenshot to tide me over till I get home to install this??


----------



## Attack

> _Originally posted by disco904 _
> *Anyone have a screenshot to tide me over till I get home to install this??  *


I connected to my home network and installed the module. The pics look bad since I saved them in mspaint.

1st screen shot


----------



## Attack

2nd screen shot


----------



## osetivo

Haven't tried yet, but is a future connection to mplay** on the agenda?

Edit oops, forgot whrere I was.


----------



## cwingert

Nope.

I was bored for an hour and starting writing it.

Turned out to take 4 hours because of how painful it is to interact with the stupid MFS and my lack of TCL skills.

What do you mean 09 is a syntax error?  Octal? Stupid TCL. 

mplayer isn't a bad word. tivo-mplayer on the other hand.... 



> _Originally posted by osetivo _
> *Haven't tried yet, but is a future connection to mplay** on the agenda?
> 
> Edit oops, forgot whrere I was. *


----------



## jberman

You're right, that was just me flubbing "1.9.4 beta 5." My bad. To the best of my knowledge there is no 1.9.5 yet.


----------



## AlphaWolf

> _Originally posted by cwingert _
> *
> It would be fun to try if TCL wasn't such a pain, its funny how you miss strong typing when it is gone. Running through the database to get data is painful too. Might not be a bad idea to export the database to a PC for crap like this. *


What about caching the guide data to the ext2 partition? The guide data can't be over a few megs, (if that) could it?


----------



## occitan

Re: TiVoWeb mplay**



> _Originally posted by cwingert _
> *Nope.
> 
> I was bored for an hour and starting writing it.
> 
> Turned out to take 4 hours because of how painful it is to interact with the stupid MFS and my lack of TCL skills.
> *


Isn't tcl fun ! Debugging especially. I've lost days of my life recently making just a few minor mods to a TCS module...

Anyway, the reason I'm posting is that I discovered your mplay** works perfectly with the M**Str**m TiVoWeb module, using http:// URLs instead of tivo:// URLs. This means it isn't necessary to run vserv**

The current Mfs***eam module redirects the download to port 2000 or something like that when selecting on a program from the web page, making it slightly more complicated than a simple cut & paste into the command line, but it works once you get the final URL.

Therefore it should be possible to configure ones browser prefs to launch mplay** when receiving streams from this module, e.g. file extension based. It may be necessary to modify the javascript a little in the M**Str**m page, as the way URL redirecting is done might not be compatible with defining a browser helper, but it should be much much easier than writing a new mplay** module from scratch...

Ch**s


----------



## disco

Well, I installed this module and it works GREAT! Thanks, cwingert! 

BTW, has anyone made a channel/show grid module like the one used on DirecTV or TVGuide.com, where it has channels down the left, and times across the top?...showing multiple channels at once?


----------



## cwingert

The problem with http download is that stream skipping is disabled in the stock mplayer for that protocol.

You can also setup protocol's in your brower to launch applications based on the tivo: protocol



> _Originally posted by occitan _
> *Re: TiVoWeb mplay**
> 
> Isn't tcl fun ! Debugging especially. I've lost days of my life recently making just a few minor mods to a TCS module...
> 
> Anyway, the reason I'm posting is that I discovered your mplay** works perfectly with the M**Str**m TiVoWeb module, using http:// URLs instead of tivo:// URLs. This means it isn't necessary to run vserv**
> 
> The current Mfs***eam module redirects the download to port 2000 or something like that when selecting on a program from the web page, making it slightly more complicated than a simple cut & paste into the command line, but it works once you get the final URL.
> 
> Therefore it should be possible to configure ones browser prefs to launch mplay** when receiving streams from this module, e.g. file extension based. It may be necessary to modify the javascript a little in the M**Str**m page, as the way URL redirecting is done might not be compatible with defining a browser helper, but it should be much much easier than writing a new mplay** module from scratch...
> 
> Ch**s  *


----------



## cwingert

This is what I asked about a few posts up.

You are talking about an EPG.



> _Originally posted by disco904 _
> *Well, I installed this module and it works GREAT! Thanks, cwingert!
> 
> BTW, has anyone made a channel/show grid module like the one used on DirecTV or TVGuide.com, where it has channels down the left, and times across the top?...showing multiple channels at once? *


----------



## troycarpenter

This is a great module. I there are only two problems I have encountered...one easily fixed, and the other probably nothing that can be done.

First, when you create the grid, you need to use $url_prefix for any URLs you create yourself. That requires adding a "global url_prefix" at the beginning of any routines and using the variable while creating the link(Around line 268, I think). You do not need it wherever you use TivoWeb routines to create links.

The unfixable problem seems to be related to stations that I have added to my lineup. I have a script that will take a channel and change the station pointer. I use this to take a station that is not in my lineup and point a channel to a station that is (it's a long story as to why I need to do that). When I pick one of the new stations to generate the grid, the script takes forever, and before crashes reports about some type of conflict and the Tivo resets (or I wonder if I am running out of memory...hmm). So far that only happens on stations where my script has run and is probably a side effect of the script.

One feature request...Can you make the week start with the current day, instead of Monday? That would give a week's worth of data on one screen, instead of the remainder of the week.

Great work.

Troy


----------



## Attack

> _Originally posted by troycarpenter _
> *
> The unfixable problem seems to be related to stations that I have added to my lineup. I have a script that will take a channel and change the station pointer. I use this to take a station that is not in my lineup and point a channel to a station that is (it's a long story as to why I need to do that). When I pick one of the new stations to generate the grid, the script takes forever, and before crashes reports about some type of conflict and the Tivo resets (or I wonder if I am running out of memory...hmm). So far that only happens on stations where my script has run and is probably a side effect of the script.
> 
> Troy *


Do you use the "Channel Map" module for TiVoWeb? If no, I could see if it has a problem with a channel remapped with this script.


----------



## troycarpenter

No, this is not with remapped channels. Remember, there are channel objects and station objects. Channel objects associate channel numbers with station objects. Remapping channels changes the association between the channel object and channel number.

Also, and this is more important, channel remapping can only change the channel numbers for stations that already exist in the lineup

My script changes the association between the channel object and the station object. With my script I can take a channel object, which used to be associated with a station in my lineup, and associate it with a station that is NOT in my lineup. Which means it is how you add stations to your lineup that are not in the lineup (as long as that channel is in at least one of the lineups on your TiVo, which is a good chance).

Now, after my script runs, I usually have to remap the channel to put the new station in the right place.

I too have run the module on channels that I simply remapped and there was no problem. It is only on stations that I have added to my lineup that were not there before.


----------



## rbiro

Sometimes when I run ChannelMap, Tivo just reboots. (SVR-2000, 3.0-01-1-010).

Anybody else see this?


----------



## rrr22777

> _Originally posted by rbiro _
> *Sometimes when I run ChannelMap, Tivo just reboots. (SVR-2000, 3.0-01-1-010).
> 
> Anybody else see this? *


I have also seen this on my svr-2000.


----------



## John Murray

When I select the ChannelGrid from tivoweb, the tivo restarts.
Very strange.


----------



## mrschwarz

This is a terrific module. I have already found a few 'gems' and I have only had it a few minutes. Thanks!


----------



## wintersn

I can't seem to figure out whats going on here. Here is the error output for channelgrid. I had it working fine 2 days ago, now it doesn't seem to.
Anyone know what it could be? I suspect the channels aern't lining up to what they should be.

Nate

--cut here--
action_channelgrid '' 'set "whichChannel" "661770";'
can't open object (errDbNotFound)

while executing
"db $db openid $fsid"
("uplevel" body line 2)
invoked from within
"uplevel $body"
invoked from within
"ForeachMfsFileTrans fsid name type "/Schedule" "$whichChannel:" 15 {
set stationday [db $db openid $fsid]
set showings [dbob..."
(procedure "::action_channelgrid" line 111)
invoked from within
"::action_$action $chan $part $env"
("eval" body line 1)
invoked from within
"eval {::action_$action $chan $part $env}"
--cut here--


----------



## sanderton

errDbNotFound suggests the database didn't load; do a full Restart on TiVoWeb.


----------



## cojonesdetoro

> _Originally posted by cwingert _
> *I'll add it if there is enough interest *


Maybe an episode title or the first few words of the description if there is none.


----------



## wintersn

I've done a full restart of of Tivoweb. I've also tried renaming my Tivoweb folder, un-taring a fresh install of Tivoweb with only channel grid installed. This gave me the same error. Is the database stored in memory when this is run, or is there a file that I need to delete or reset or something? I'll try a tivo reboot when it stops recording this afternoon.
Nate


----------



## sanderton

> _Originally posted by wintersn _
> *I've done a full restart of of Tivoweb. I've also tried renaming my Tivoweb folder, un-taring a fresh install of Tivoweb with only channel grid installed. This gave me the same error. Is the database stored in memory when this is run, or is there a file that I need to delete or reset or something? I'll try a tivo reboot when it stops recording this afternoon.
> Nate *


Something is causing TiVoWeb to close the database, or maybe it doesn't open in the first place.

Try stopping TiVoWeb and restarting it with the console parameter:

/var/hack/tivoweb-tcl/tivoweb console

See if that gives any clues.


----------



## wintersn

I've been using console all day, its a great way to see whats going on. Thanks for the help. I did a reboot from bash and it cleared it up. I guess something was keeping the DB from being rebuilt, a quit of Tivoweb wouldn't take care of it.
Only reason I wasn't rebooting was b/c of football playoffs (real, I mean, American football  )

On a side note, as far as stopping services that are accessing the MFS. I guess I've read that if you kill them they will reboot tivo. I've been using
http_get -U http://127.0.0.1:80/quit -D /tmp -T 0 -C 0 >/dev/null 2>&1 \
to attempt to stop tivoweb.
As far as other services etc, are there ways to stop them if they hang up?

Nate


----------



## sanderton

You gave up on Denver Indianapolis then. 

To stop TiVoWeb, select Quit from the Restart menu. Most well written software has some kind of quit mechanism.


----------



## mrtickle

Sometimes I've had problems with tivoweb whilst the tivo is in the middle of a daily call (or indexing following it).


----------



## cachecard_user

I get the same database error. Using cachecard.


----------



## lsigmon

I have a S1 DTivo.

I get the channel selection list. After I select a channel I get this error:

INTERNAL SERVER ERROR
--cut here--
action_channelgrid '' 'set "whichChannel" "1263002";'
can't scan path (0x70009)

while executing
"mfs scan $dirName -start $lastName -count 50"
("uplevel" body line 2)
invoked from within
"uplevel $body"
invoked from within
"transaction {uplevel $body}"
(procedure "RetryTransaction" line 5)
invoked from within
"RetryTransaction {
set batch [mfs scan $dirName -start $lastName -count 50]
if { $lastName == [lindex [lindex $batch 0] 1] } {..."
(procedure "ForeachMfsFile" line 45)
invoked from within
"ForeachMfsFile fsid name type /Schedule "" {
set date [lindex [split $name ":"] 1]

if { $date > $lastday } {
set lastday $date
}

incr cou..."
(procedure "cgGetLastGuideDay" line 5)
invoked from within
"cgGetLastGuideDay"
(procedure "::action_channelgrid" line 92)
invoked from within
"::action_$action $chan $part $env"
("eval" body line 1)
invoked from within
"eval {::action_$action $chan $part $env}"
--cut here--


----------



## borghe

weird.. trying to get the grid for nicktoons this morning... crashes my tivo every single time... cannot get it.. tried three times, then tried half a dozen other channels.. only seems to be nicktoons crashing it... if you were interested, here is what the console reports:

Accepting Connections
Dumping mempool to /tmp/BlockFailure.197

To view the blocks, run:
$TIVO_ROOT/devbin/poolview.tcl <app-with-symbols> /tmp/BlockFailure.197

In the UI that comes up, find your leaked block by address (see above)
This will help you identify the type and ownership of the blocks.

Common causes for leaks:
- Circular refs. Redefine ownership without circular dependency
- Explicit Malloc or GetChunk without Free or ReturnChunk
- Use of non-TmkCore objects, without using delete operator (TmkLock for exam
ple)

Tmk Assertion Failure:
BlockFailure, line 2150 ()
Tmk Fatal Error: Thread tivosh <197> died due to signal -2
1ad0738 1acf054 1ac9358 1cf0f40 1cfcd18 1d485f8 1d6cb68 1d4849c 1d5d4e0 1d5d220
1d479cc 1d6c200 1d59f5c 1d479cc 1cfdc98 1cfd254 1d59f5c 1d479cc 1d6c778 1d59f5c
1d479cc 1d6c778 1d59f5c 1d479cc 1d48b78 1d59f5c 1d479cc 1d6c778 1d59f5c 1d479cc
1d47754 19b84a4 19ccba0 19d5028 1bc9cbc 1bc90dc 1bc93ec 19c1834 1d4718c 1d59f5c
1d479cc 1d64a64 1d65b70 1cfccb8 1cfca00 1800134


----------



## bobnick

Installed this on my UK Tivo - it's interesting, but the shows are listed under the wrong day - Thursday's shows are listed as being shown on Friday.
When the page is being generated, my Tivo almost hangs - the video its recording corrupts, and plays back the same 6 seconds of footage 3 or so times


----------



## dickuk

Just tried this on a UK tivo and it came up Building Grid...Done and then rebooted the tivo.

Any ideas anyone?


----------



## sanderton

> _Originally posted by bobnick _
> *Installed this on my UK Tivo - it's interesting, but the shows are listed under the wrong day - Thursday's shows are listed as being shown on Friday.
> *


We found this the other day and I fixed it - but I can't find the thread with the fixed version for the life of me.

Correction: I was thinking of the Schedule module.

Bet it's the same bug though.  (Days based on midnight, but US time zone offset moves it back a day but in the UK its a different day)


----------



## bobnick

I remembered that, but was just reporting it here for attention. I wasn't going to fix the problem, as the module screws up my recording.


----------



## rpongett

I cleaned this up a little bit. Changes:
(1) It now shows Episode Titles (along with show titles)
(2) If you click on an Episode Title, the links are fixed to take you to that episode (rather than a list of all episodes for that show)
(3) If you roll the mouse cursor over the episode title, a popup box will apear with the original air date and episode description in it (note: you can still request for it to show "description" on the web page instead of a popup box if you put true in the "set SHOW_DESCRIPTION" line).

Re the errors discussed above, I think they're related to MFS database closing errors. I've got them to, every now and then. Just Quit tivoweb (in the restart link) and manually restart it. Its fixed them for me both times it happened to me.


----------



## PortlandPaw

I'm having similar problems with any of the modules that schedule future recordings -- User Interface, Manual Recording, Channel Grid, What's On -- there's some kind of common problem.

Mine is a new, fresh install of 1.9.4 on a recently expanded and networked TiVo.

I'll be glad to provide the error codes for what's happening -- here is one from Manual Recording:

INTERNAL SERVER ERROR
--cut here--
action_manrec '/' ''
can't read "tvratingnums": no such variable
while executing
"html_form_select "ratingstr" $tvratingnums $tvratingvals $ratingstr"
(procedure "::action_manrec" line 94)
invoked from within
"::action_$action $chan $part $env"
("eval" body line 1)
invoked from within
"eval {::action_$action $chan $part $env}"
--cut here--

I have the machine behind a SSL reverse proxy server firewall, so if anybody wants to see for themselves, please PM me.

I'd appreciate any guidance any of you can provide.


----------



## PortlandPaw

Here's another one...this from What's On. I hope somebody can figure out what's broken here -- remote scheduling was one of the main reasons I took the leap into networking and hacking!

--cut here--
action_showing '/2313585/87' ''
can't read "genrenums": no such variable
while executing
"lsearch $genrenums $genre"
("foreach" body line 2)
invoked from within
"foreach genre $genres {
set genreindex [lsearch $genrenums $genre]
if { $genreindex != -1 } {
if { $genrestr != "" } {
append ..."
("uplevel" body line 255)
invoked from within
"uplevel $body"
invoked from within
"transaction {uplevel $body}"
(procedure "RetryTransaction" line 5)
invoked from within
"RetryTransaction {
if { [regexp {([0-9]*)/(.*)} $objectid junk fsid subobjid] } {
set showing [db $db openidconstruction $fsid $subobjid]
} els..."
(procedure "::action_showing" line 47)
invoked from within
"::action_$action $chan $part $env"
("eval" body line 1)
invoked from within
"eval {::action_$action $chan $part $env}"
--cut here


----------



## PortlandPaw

There is so much information on this forum, it's hard to catch up on several years of development. But I think I'm starting to learn what most of you have known all along.

The problems I and others are having have to do with differing versions of ui.itcl of British and American flavors. At the moment, I have User Interface, Channel Grid and Manual Recording working OK, but I can't get What's On to bring up individual program information.

The other thing I can't get going is Wishlist.

Is there such a thing as the definitive ui.itcl? One that works with all of the currently popular modules?


----------



## wintersn

The 00ui.itcl workded for me, I think its in this thread, if not just search for it. It will contain the genre info for everyone, hey it works for me and I'm close enough to you. From what I've read, get rid of your old ui.itcl and leave the 00ui.itcl named as is, it likes to load first and the 00 at the beginning forces it to.

My tivo did require a reboot at one point to get this all working, just quitting Tivoweb and restarting it from console didn't seem to work for some reason. 

Nate


----------



## kitschcamp

There is a link to it in my sig.


----------



## PortlandPaw

I downloaded kitschcamp's ui.itcl file (thank you!), renamed it 00ui.itcl, did a re-boot (full reload didn't do it) and everything seems to be running fine now. All the sick modules appear to be healed.

Thank you to all who helped; great support!


----------



## derekbuck

What happens when you request it to record a program in the UK then?

If the program is showing on Tuesday but ChannelGrid reports it as Monday will it correct itself or does this mod not work on UK machines?

Del.


----------



## sllerts

As others have noted, my Tivo seems to reboot itself almost every time I access a channel while the grid is being generated. This is a DSR6000 at 3.1. I'm using the 00ui.itcl file. Any thoughts?

Steve


----------



## TivoMind

I am having the same problems with the reboots, the "can't open object (errDbNotFound)" error message, and the "can't scan path (0x70009)" error. In fact, in my experience the "can't open object" error happens. It does effect many of the functions in the UI module after it occurs. The "can't scan path" error message occurs when I keep running the Grid module after the "can't open object" error. Ultimately, if I continue to proceed using the program, it will reboot the Tivo. Restarting the Tivo or Tivoweb resets the memory configuration and these problems go away for awhile. These errors occur most often when I have some other processes/hacks running on the Tivo. If I only have Tivoweb running the module runs pretty well for me. I believe that is another indicator that it might be memory.

As I look through this code I see that almost the entire screen is loaded into TCL lists/arrays before it is rendered. These lists/arrays take up memory. I think that the stability problems may be in the amount of memory consumed by this approach. It seems that this memory consumption could be reduced by only storing the needed IDs for each program on the grid and getting all of the other data directly from MFS at the time the screen is rendered. 

I suppose it might make it execute slower, however, it is currently getting this data (program title, episode title, description, etc.) from MFS and this "just in time" approach would just move this MFS access back to the rendering section. Shouldn't take a lot more time as there would be very little additional MFS access above what is being done now. All that would be changed would be that each program would get this data just in time to send it out to the html table. There would be no need to store it in memory. After it was sent, these memory variables could be reused. Since this data can be large (esp. description) this should save a lot of memory on a full grid.

I will look at figuring out the changes I've described above, but it may take a few days as I'll want to test it out once I get the changes made.


----------



## slimjime17

I get the same re-boot problem when I use this module.
The module looks grate and I would use it a lot.

Dumping mempool to /tmp/BlockFailure.212
Tmk Assertion Failure:
BlockFailure, line 1771 ()
Tmk Fatal Error: Thread tivosh <212> died due to signal -2
1a344ec 1a32a44 1a2ed70 1b95e0c 1c4d5e8 1c7e0fc 1c74830 1c6d230 1c6c15c 1c619c0
1c78050 1c61a10 1c8df68 1c77e7c 1c61a10 1c4e254 1c4d810 1c77e7c 1c61a10 1c8e4e0
1c77e7c 1c61a10 1c8e4e0 1c77e7c 1c61a10 1c640f8 1c77e7c 1c61a10 1c8e4e0 1c77e7c
1c61a10 1c61798 19148b8 19230c0 1929274 1c98f2c 1c88c24 1c88f34 1919d90 1c61118
1c77e7c 1c61a10 1c849c0 1c85ec8 1c4d248 1c28cac 1800134

Just wanted to know if anybody is trying to fix this problem?


----------



## scottjf8

When I try this module (Hughes S1 DTivo - Airnet - TivoWebPlus) I get this:

INTERNAL SERVER ERROR
--cut here--
action_channelgrid '' 'set "whichChannel" "3215";'
can't scan path (0x70009)

while executing
"mfs scan $dirName -start $lastName -count 50"
("uplevel" body line 2)
invoked from within
"uplevel $body"
invoked from within
"transaction {uplevel $body}"
(procedure "RetryTransaction" line 5)
invoked from within
"RetryTransaction {
set batch [mfs scan $dirName -start $lastName -count 50]
if { $lastName == [lindex [lindex $batch 0] 1] } {..."
(procedure "ForeachMfsFile" line 45)
invoked from within
"ForeachMfsFile fsid name type /Schedule "" {
set date [lindex [split $name ":"] 1]

if { $date > $lastday } {
set lastday $date
}

incr cou..."
(procedure "cgGetLastGuideDay" line 5)
invoked from within
"cgGetLastGuideDay"
(procedure "::action_channelgrid" line 92)
invoked from within
"::action_$action $chan $part $env"
("eval" body line 1)
invoked from within
"eval {::action_$action $chan $part $env}"
--cut here--


----------



## Snoopy

It makes no difference which version of 00ui.itcl or ui.itcl i use, I get a reboot. I have a s1 sony t60. Perhaps somewhere down the road, somebody like Sanderton can fix it. The channelgrid module would be of great use to me also.

I even found some information in the text file included in the wishhlists module where I theorized that either the wishlists.itcl module, and/or the ukgenre.js could be causing a problem. Apparently this was not the case either for me because I tried re-doing doing the ui.itcl renames and replacement tests AFTER putting everything back to normal with TWP 1.0 and not using any of the wishlist stuff.

Worthy of special mention might be the error message below. I seem to get this after reseting TWP 1.0, removing ukgenres.js all-together, and renaming and replacing the ui.itcl file with the copy of it from kitschcamppalace.org. This is apparently a newer copy of ui.itcl (they call it 00ui.itcl). than even the one included with TWP 1.0. *At least I get an errror* when I use his copy and remove that file. 
So one of those two things at least "produces an error". Then, When I use the native TWP 1.0 version of ui.itcl ukgenres.js, I just get a reboot with no error information at all.

INTERNAL SERVER ERROR
--cut here--
action_channelgrid '' 'set "whichChannel" "3521";'
can't open object (0x30007)

while executing
"db $db openid $programfsid"
("uplevel" body line 10)
invoked from within
"uplevel $body"
invoked from within
"transaction {uplevel $body}"
(procedure "RetryTransaction" line 5)
invoked from within
"RetryTransaction {
for { } { $y < $last } { incr y } {

set sl [lindex $scheduleList $y]

set constprogramfsid [lind..."
(procedure "::action_channelgrid" line 148)
invoked from within
"::action_$action $chan $part $env"
("eval" body line 1)
invoked from within
"eval {::action_$action $chan $part $env}"
--cut here

I have exhausted every resource I've heard so far. I've restarted the TiVo with the restart command in Telnet after each test. I'm just lost on this one.


----------



## Fozzie

> _Originally posted by Snoopy _
> *Worthy of special mention might be the error message below. I seem to get this after reseting TWP 1.0, removing ukgenres.js all-together, and renaming and replacing the ui.itcl file with the copy of it from kitschcamppalace.org. This is apparently a newer copy of ui.itcl (they call it 00ui.itcl). than even the one included with TWP 1.0.*


The ui.itcl from kitschcampplace is for Tivoweb, not Tivoweb Plus and so I wouldn't be surprised if you get errors using it.

Also, I'm not sure why you're using ukgenres.js - you're not in the UK are you?


----------



## phrend

(Using TWP 1.0)

INTERNAL SERVER ERROR
--cut here--
action_channelgrid '' 'set "whichChannel" "2107";'
can't scan path (0x70009)

while executing
"mfs scan $dirName -start $prefix -count 50"
("uplevel" body line 1)
invoked from within
"uplevel $body"
invoked from within
"transaction {uplevel $body}"
(procedure "RetryTransaction" line 5)
invoked from within
"RetryTransaction {
if { [catch {mfs scan $dirName -start $prefix -count 50} batch] } {
global errorCode errorInfo
if {..."
(procedure "ForeachMfsFile" line 9)
invoked from within
"ForeachMfsFile fsid name type /Schedule "" {
set date [lindex [split $name ":"] 1]

if { $date > $lastday } {
set lastday $date
}

incr cou..."
(procedure "cgGetLastGuideDay" line 5)
invoked from within
"cgGetLastGuideDay"
(procedure "::action_channelgrid" line 92)
invoked from within
"::action_$action $chan $part $env"
("eval" body line 1)
invoked from within
"eval {::action_$action $chan $part $env}"
--cut here--

The above happens on every channel I try to display.


----------



## Snoopy

rebooting and the error you just pasted are constant problems swith the channel grid module. It just doesn't work well. As far as I know, there are no attempts to fix it.


----------



## tpdugan

Has there been any development on this lately? This could be "Killer Ap" for me if it can be stablized. 

When running the module on TivoWebPlus 1.0 I usually get an internal server error or a reboot. I just intalled a CacheCard so reboots are a 5 minute ordeal. Up until tonight all of the problem occured when the grid was loading (or not loading). But just now I got an internal server error when hitting record after checking for conflicts.

If you tell me what logs you need to troubleshoot I'll post them ASAP. I am new to networking Tivo and also a Linux noOb so I need to know where to find helpful info.

This really could enhance the Tivo and TivoWebPlus experience if the kinks can be ironed out. 

Thanks-

Tom


----------



## Brett

> _Originally posted by tpdugan _
> *Has there been any development on this lately? This could be "Killer Ap" for me if it can be stablized.
> 
> When running the module on TivoWebPlus 1.0 I usually get an internal server error or a reboot. I just intalled a CacheCard so reboots are a 5 minute ordeal. Up until tonight all of the problem occured when the grid was loading (or not loading). But just now I got an internal server error when hitting record after checking for conflicts.
> 
> If you tell me what logs you need to troubleshoot I'll post them ASAP. I am new to networking Tivo and also a Linux noOb so I need to know where to find helpful info.
> 
> This really could enhance the Tivo and TivoWebPlus experience if the kinks can be ironed out.
> 
> Thanks-
> 
> Tom *


Tom, have you done any updates on this?

-Brett


----------



## john1980

I had a few problems with the channelgrid module so have made some changes to it to fix up various issues that were affecting me. Not sure if they will help or hinder anyone else (and I have not yet tested the script when run on a Sunday so there could be a problem there), but you are more than welcome to give it a shot to see if it resolves any of your issues.


----------



## Fozzie

You ought to detail the changes that you've made, so people can decide whether to install it or not. Especially since you've published it with an up-issued version number.

Thanks.


----------



## john1980

Correct on both accounts... I have renamed the ZIP for v0.0.1 so as not to confuse people as thinking this is an upgrade if their existing version is currently working. The changes made correct a problem where the EPG was out of wack and offset by a day. The date at the top was also incorrect and I have adjusted both the start-time and duration to match them to the closest 15 minute time-slot (the existing code seemed to be matching start time to the closest half hour?). It also fixes the 'tvratingnums' error that some people were receiving. I prefer the way the schedule is now displayed, but others may disagree. I am also willing to fix any errors that I can replicate on either my UK v2.5.5 or US 3.0 system when people use this code.

FYI: Other modules I have "fixed" up for my systems include:
TivoTitle
ManRec
BufferHack


----------



## Fozzie

Cheers John. I had two out of the three other modules already. Haven't got around to trying the BufferHack. Nice little workaround for the links, BTW


----------



## HUGE2U

I get the following error when I try this module:

INTERNAL SERVER ERROR
--cut here--
action_channelgrid '/' ''
expected integer but got "22.1"
while executing
"lsort -integer [array names channeltablenum]"
(procedure "cg_show_stations" line 12)
invoked from within
"cg_show_stations $chan"
(procedure "::action_channelgrid" line 13)
invoked from within
"::action_$action $chan $part $env"
("eval" body line 1)
invoked from within
"eval {::action_$action $chan $part $env}"
--cut here--

I have a HR10-250 running 3.1.5.

HUGE


----------



## john1980

> I have a HR10-250 running 3.1.5.

Very interesting... it seems that your channel numbers are not integers (eg 22.1).

If you could use an editor and alter line 32 of your code to replace the section that reads "lsort -integer " to read "lsort -real " then this may resolve the issue. I have updated the previous posted package if you wish to download it again.

Please let me know if changing it to sort real numbers rather than integers fixes the problem for you.


----------



## HUGE2U

That update worked - thanks!



HUGE


----------



## john1980

Another little bug fixed where it was not listing the last group of 50 shows. Should be no major problems with this module. I run a timezone of 0 (GMT) on my TiVo's so have not altered (or debugged) the timezone references in the code, so let me know if there is strange behaviour in respect to this.

Note: Those of you that had trouble with the "real" channel numbers may also be interested in knowing that I have updated the ManualRecording (manrec) module referenced earlier to also handle the real numbers used by the Digital TiVo's.


----------



## john1980

This version does more error checking so that it will not abort when run against bad guide data. You should see ! when database references are invalid... and there will be gaps in the grid for those items. You should not need this version unless you are using custom guide data.


----------



## KidGloves

still crashes my tivo randmonly.. (usually after one or two grid listings).

Dumping mempool to /tmp/BlockFailure.231

To view the blocks, run:
$TIVO_ROOT/devbin/poolview.tcl <app-with-symbols> /tmp/BlockFailure.231

In the UI that comes up, find your block by address (see above)
This will help you identify the type and ownership of the blocks.

Tmk Assertion Failure:
DumpArenaAndBlocksAndDie, line 1459 ()
Tmk Fatal Error: Thread tivosh <231> died due to signal -2
1033e68


----------



## john1980

> _Originally posted by KidGloves _
> *Tmk Assertion Failure:
> DumpArenaAndBlocksAndDie, line 1459 ()
> Tmk Fatal Error: Thread tivosh <231> died due to signal -2
> 1033e68*


Firstly, you are not going nuts, I have also noticed this occasionally. I figured it was just a result of my dodgy guide data, but it could also be an issue with memory. Some have resolved similar issues by setting TIVOSH_POOLSIZE before running their TCL scripts. As this is run via WivoWeb I am pretty sure it has already been set. I might have a play this week and see if I can figure out the cause, and hopefully a possible fix. [Update: No matter what I try, I can not get the module to crash. I am guessing that it could be a result of bad guide data and running out of memory. I will try again the next time I have a crash and check the guide data to see if there are any issues].

In the meantime you may wish to edit the tivoweb file in the tivoweb directory and change the 'export TIVOSH_POOLSIZE=2916352' line to 'export TIVOSH_POOLSIZE=3244032' and then restarting TivoWeb.


----------



## autoengmike

I was having the same rebooting issue as above. I entered in the poolsize setting you mentioned and it is working for now. You mentioned the timezone is set to 0 and it shows up with all my shows one day off. The show dates are correct but the day of week is off by one (eg. Friday's shows are under Thursday's column and so forth). My time zone is -5 Eastern US. Great program by the way!


----------



## john1980

> *I was having the same rebooting issue as above. I entered in the poolsize setting you mentioned and it is working for now.*


I have done a large cleanup of the code and added a few extra options that should resolve the rebooting issue. Essentially if you set SHOW_DESCRIPTIONS to "false" then it will save a whole heap of memory. It can still be set to "true" to have the descriptions displayed within the grid, and "hover" if you wish to have the descriptions available when you hover over the episode, but the "false" option should be very stable.



> * You mentioned the timezone is set to 0 and it shows up with all my shows one day off. The show dates are correct but the day of week is off by one (eg. Friday's shows are under Thursday's column and so forth).*


Both of my development systems run in GMT (tzoffset=0) so this will take a little more time to resolve. I have altered some of the TZ handling so it may have resolved your issue.

I have attached the new version (v0.0.5), Please let me know if it resolves the tzoffset issue, or wether it makes it worse. At the bottom of the page you will see a small message showing what your tzoffset value is (along with the version number of the module).


----------



## autoengmike

The time zone issue seems to be corrected. My shows are now under the correct day of week.


----------



## ThurstonX

I loaded v0.0.5 into TWP 1.1-pre2 and ran into the following error when clicking on an individual show in a channel's grid (so I get that far):

INTERNAL SERVER ERROR
--cut here--
action_showing '/97208/44' ''
can't read "genrevals": no such variable
while executing
"lsearch $genrevals "Show Types""
("uplevel" body line 260)
invoked from within
"uplevel $body"
invoked from within
"transaction {uplevel $body}"
(procedure "RetryTransaction" line 5)
invoked from within
"RetryTransaction {
if { [regexp {([0-9]*)/(.*)} $objectid junk fsid subobjid] } {
set showing [db $db openidconstruction $fsid $subobjid]
..."
(procedure "::action_showing" line 47)
invoked from within
"::action_$action $chan $part $env"
("eval" body line 1)
invoked from within
"eval {::action_$action $chan $part $env}"
--cut here--

Interestingly, the Description, Year, etc., do appear, below the error. Not sure what's missing, if anything, where the error is.

Other than that, nice mod 
Time zone is also working for me, btw.


----------



## john1980

ThurstonX said:


> I loaded v0.0.5 into TWP 1.1-pre2 and ran into the following error when clicking on an individual show in a channel's grid (so I get that far):
> 
> INTERNAL SERVER ERROR
> --cut here--
> action_showing '/97208/44' ''
> can't read "genrevals": no such variable
> while executing
> "lsearch $genrevals "Show Types""
> ("uplevel" body line 260)
> invoked from within


Hmm... that is not the Channel Grid module as there is no reference to "genrevals" in any of the code. I would say that it is another module which is being called from Channel Grid which is getting upset.


----------



## ThurstonX

john1980 said:


> Hmm... that is not the Channel Grid module as there is no reference to "genrevals" in any of the code. I would say that it is another module which is being called from Channel Grid which is getting upset.


I did a Quit/manual restart of TWP 1.1-pre2 and the tivoweb.log does not show the module loading. It is accessible via the interface, and the above error did not manifest itself. Does the mod not show itself in tivoweb.log? If so, how is it identified?

Now after some messing around with TWP 1.1-pre2, it seems prone to errors due to... resource conflicts? Not sure. But, after ensuring a clean startup, if I simply use the browser's back button and retry the action that errored, it might work. I was able to go all the way through the Channel Grid flow and schedule a recording.

So, nice mod! I'll take this over to the TWP 1.1-pre2 thread @ DDB.

~~~~~~~~~~~~~~~~~~~~~~~~~

UPDATE:

After loading SteveT's UI_SteveT_7.zip (see the "other" site; General TiVo Development | TivoWebPlus - Upgrade development and posting)
I did see channelgrid loading in tivoweb.log.


----------



## ThurstonX

I say *may* because this is a tad convoluted. You can read the details of the testing I've done here

or not. Guess they don't like us X-refing to the "other" site, cuz it keeps stripping DDB from the freakin' URL (grrrrr). Anyway, original problem decription, test results and links are in the attached text file.

Briefly, with both tuners in a DTiVo recording, after scanning the What's On listing for the current hour, though not necessarily attempting to schedule what would be a "conflicted" recording (that's a TWP 1.1-pre2 issue, and led me to this...), and then accessing the Channel Grid, and finally clicking on a station ID, the TiVo reboots. It's happened twice in exactly that scenario. I haven't had a chance to test it when either one or both tuners are not recording.

One final note: in TWP's main menu, it lists the mod as
*Channel Grid By WyngNut*
or somesuch. I'm fairly certain I've only ever put v0.0.5 in TWP's modules dir, as this is a relatively recently hacked unit (less than a month), and yours is the first grid mod I stumbled across. I just don't recall seeing that before.

Any insight would be great. I will post any further test results when I can.

It's definitely an odd one, and I'm not so quick to blame channelgrid, but the reboots are definitely caused from within those pages. NB, after rebooting, with both tuners' recordings resumed, going back into Channel Grid straight away works fine (except for the odd Internal Server error, as listed in previous posts).


----------



## john1980

ThurstonX said:


> Briefly, with both tuners in a DTiVo recording, after scanning the What's On listing for the current hour, though not necessarily attempting to schedule what would be a "conflicted" recording (that's a TWP 1.1-pre2 issue, and led me to this...), and then accessing the Channel Grid, and finally clicking on a station ID, the TiVo reboots.


It is true that the ChannelGrid module sometimes causes the system to reboot. If you look in /var/log/tverr then you are likely to find a TmkAssertionFailure message.

I have a feeling this is related to low memory... but I have made the module use less memory as well as increased the PoolSize without much success. I will try your scenario as I am having a little trouble resolving the issue as it is very intermittent.

There could also be a timing issue as the module does do a fair amount of MFS work.



ThurstonX said:


> One final note: in TWP's main menu, it lists the mod as
> *Channel Grid By WyngNut* or somesuch.


This has always been the case... he wrote both the ChannelGrid and ManualRecording module which I have made modifications to.


----------



## ThurstonX

john1980 said:


> It is true that the ChannelGrid module sometimes causes the system to reboot. If you look in /var/log/tverr then you are likely to find a TmkAssertionFailure message.
> 
> I have a feeling this is related to low memory... but I have made the module use less memory as well as increased the PoolSize without much success. I will try your scenario as I am having a little trouble resolving the issue as it is very intermittent.
> 
> There could also be a timing issue as the module does do a fair amount of MFS work.


The only entry:

bash-2.02# more tverr
Feb 10 14:31:09 (none) TmkMediaswitch::Trace[199]: BOGUS EVENT LENGTH: 578160 SID:0xe0



john1980 said:


> This has always been the case... he wrote both the ChannelGrid and ManualRecording module which I have made modifications to.


Thanks for the clairification.


----------



## ThurstonX

The last test I did with channelgrid.itcl involved simply going into the list of stations (no other TWP activity) and clicking on one. No recordings going on, just live TV on both tuners.

Result: reboot

Had to pull the mod  

Hope a fix is in the works, cuz when it works it's a nice one.


----------



## john1980

This version attempts to free up some memory on the fly to reduce memory overflow (which results in the TiVo hanging for a few seconds before some kind of watchdog facility reboots it).

Might pay to check your other TivoWeb modules as some of them will create huge lists if you have other modifications loaded such as a NoNag item. An example is the "What's On" module which will create a very large dropdown list if you have a show scheduled way in the future. These can be easily fixed by placing a limit on the size of such lists, or excluding commonly used NoNag dates (such as day 15000).

Anyway, if you are seeing the following error appear in your /var/log/tverr file then the chances are TW/TWP is running out of memory (I have tested this on both a v2.5.5 and v3.0 system):


Code:


Feb 14 17:39:57 (none) tivosh[166]: Tmk Fatal Error: Thread died due to signal -2
Feb 14 17:39:57 (none) tivosh[166]: Invoking rule 834: rebooting system

_PS: I do not know much about TCL's memory heap, so if anyone out there is a bit of a TCL guru then they may be able to provide some useful advice._


----------



## PortlandPaw

I just took a quick look at your latest channelgrid to see how you're freeing up memory, and all I could figure is that you're doing so for the current schedule generation. I, too, know very little about tcl memory management and was wondering if you know how to free up memory in a more general case. Or, if that's what you're doing now, explain to me a little about how it works. I'd like to work similar code into hackman to reduce the reboot problems you've encountered.


----------



## john1980

PortlandPaw said:


> I, too, know very little about tcl memory management and was wondering if you know how to free up memory in a more general case.


All I have done is try to free up array items when they are no longer required (by doing a lreplace with {}). I may rewrite the routines a little to actually delete the items rather than just setting them to {} but I doubt there would be much advantage. Other than that I have explicitely used 'unset' to delete complete arrays that are no longer needed... but I would have thought that the local arrays would have been removed after the function completes anyway.

The real trick is to keep all arrays as small as possible... this means reducing the amount of information contained within them. It may be that we just need to start using temporary files on the filesystem rather than memory structures for larger operations. I have done quite a bit of messing around with the module and have not had any trouble with it.

The other thing to be aware of is to place limitations on any loops. For instance many of us NZ/AUS users place what we call a NoNag entry in the EPG which is a programme scheduled on day 15000 (Wed Jan 26, 2011 (epoch+15000)), so any code that picks up on this may create very large arrays. Most TivoWeb modules have a counter which will abort lookups after 100 days into the future, but some need to be modified.

But essentially the TCL shell has limited memory... there are ways to increase this slightly, but I have not seen anyone set TIVOSH_POOLSIZE above 3244032.


----------



## ThurstonX

john1980 said:


> This version attempts to free up some memory on the fly to reduce memory overflow (which results in the TiVo hanging for a few seconds before some kind of watchdog facility reboots it).
> 
> Might pay to check your other TivoWeb modules as some of them will create huge lists if you have other modifications loaded such as a NoNag item. An example is the "What's On" module which will create a very large dropdown list if you have a show scheduled way in the future. These can be easily fixed by placing a limit on the size of such lists, or excluding commonly used NoNag dates (such as day 15000).
> 
> Anyway, if you are seeing the following error appear in your /var/log/tverr file then the chances are TW/TWP is running out of memory (I have tested this on both a v2.5.5 and v3.0 system):
> 
> 
> Code:
> 
> 
> Feb 14 17:39:57 (none) tivosh[166]: Tmk Fatal Error: Thread died due to signal -2
> Feb 14 17:39:57 (none) tivosh[166]: Invoking rule 834: rebooting system
> 
> _PS: I do not know much about TCL's memory heap, so if anyone out there is a bit of a TCL guru then they may be able to provide some useful advice._


Still having the reboot problem. You're not the devil, are you, cuz this is the coolest TWP mod (no offence PP ;-) and I can't use it!

[just kiddin' about the devil comment ;-]


----------



## john1980

ThurstonX said:


> Still having the reboot problem.


It could be the dual tuner is having issues, or the new TWP is using more memory than the previous version. I have it running on a US-v3.0 system running TW 1.9.4 and a UK-v2.5.5 system running TWP 1.0. There seems to be no memory/pool debugging enabled in the Tivo TCL shell which makes things pretty difficult to figure out.

You may like to try load TWP 1.0 and/or TW 1.9.4 to see if it helps... assuming that you are not using any modules that require TWP 1.1 then there is little difference between the various versions. You can also have more than one loaded on the system at a time... I know HackMan use to allow the user to swap between two versions.

I have another couple of things I could try to cut down the memory requirements (such as truncate the title string, etc), but am running out of ideas.

I have included a version which should only parse a weeks worth of data (which is all it should need anyway!). It should be faster and use less memory (it will also print out how many entries are being parse for the program data).


----------



## ThurstonX

john1980 said:


> It could be the dual tuner is having issues, or the new TWP is using more memory than the previous version. I have it running on a US-v3.0 system running TW 1.9.4 and a UK-v2.5.5 system running TWP 1.0. There seems to be no memory/pool debugging enabled in the Tivo TCL shell which makes things pretty difficult to figure out.
> 
> You may like to try load TWP 1.0 and/or TW 1.9.4 to see if it helps... assuming that you are not using any modules that require TWP 1.1 then there is little difference between the various versions. You can also have more than one loaded on the system at a time... I know HackMan use to allow the user to swap between two versions.
> 
> I have another couple of things I could try to cut down the memory requirements (such as truncate the title string, etc), but am running out of ideas.
> 
> I have included a version which should only parse a weeks worth of data (which is all it should need anyway!). I have not tested it, so there may be a typo/logic issue with it. I will update it from 0.0.6b to 0.0.7 once I have tested it, but give it a go because it may resolve your issues (it will also print out how many entries are being parse for the program data).


Thanks for the effort, John. I won't be able to get to it until tomorrow night at the earliest, but I'll let you know. Pretty sure I have at least one mod that requires TWP 1.1, but I'll double-check. If so, I'll try TWP 1.0 on a different port.


----------



## john1980

This new version includes support for viewing the ToDo Schedule (eg the shows that are scheduled to be recorded). This is a first cut so there could be timezone issues, etc. It essentially includes much of the original code from David Lowes schedule.itcl module. The listing is viewed by selecting the last entry in the channel list (Should be called ToDo).

Note: I have no idea how this will handle dual tuner units, as more than one show can be recorded at the same time. I have no equipment or facility to test this situation.


----------



## Fozzie

Looking good here,so far, on my UK SA 1 box


----------



## ThurstonX

John,
just finished testing v.0.0.7 & v.0.0.8, and the reboot problem appears to be fixed in both (so, the grabbing of only 2 weeks of data?). I tested v.0.0.7 with both TWP 1.1-pre2 & TWP 1.0. I also tested (and have left installed, cuz this is the most useful mod to me  v.0.0.8 in TWP 1.1-pre2. SteveT's ChannelPrefs mod requires 1.1, and I'd like to keep that one, too.

I used it to schedule about 6 shows, went as far as the page with the final record button a few times then back to the grid, canceled a few, and browsed many channels.

For v.0.0.8's ToDo function, on DTiVos it shows the most recently added of two shows, and properly reveals the first scheduled (a Season Pass in my test) if the more recent one is canceled. It's pretty cool to have the ToDo list in grid mode, but only semi-useful for those with DTV. Wish I were a programmer, cuz that would be a nice one to fix. The only thing I can think to say is maybe have a look at whatever script displays the ToDo under the UI screen, e.g.,
http://192.168.1.25:1369/ui/todo
as that page shows both tasks if two start at the same time.

A nice cosmetic enhancement would be to have the channel number and call letters displayed on the resulting grid pages after selecting it from the initial list.

Glad I finally found the time to test your latest. Thanks again!


----------



## chippyt

I just tested the .08 modules on a HDVR2 with 4.0 and Tivowebplus 1.1pre2. The todo list is displayed, but if two shows are scheduled at the same time with the dual tuners, then only one is shown on the grid. I am not sure how it picks which one is shown on the grid.


----------



## ThurstonX

chippyt said:


> I just tested the .08 modules on a HDVR2 with 4.0 and Tivowebplus 1.1pre2. The todo list is displayed, but if two shows are scheduled at the same time with the dual tuners, then only one is shown on the grid. I am not sure how it picks which one is shown on the grid.


Like I said, it displays the most recently scheduled. My initial test was adding a recording to a slot where a Season Pass had dibs on a tuner. The Grid displayed the recent add. When I canceled that one, the Season Pass show was displayed.

I then tested it with no Season Pass involved and got the same result.


----------



## john1980

The module works by creating a grid/table and then populating the cells within that table. What is probably happening with the ToDo Schedule under a dual tuner is that as it works through the todo list, if there is something schedule for the same timeslot/cell then it will overwrite the current entry.

The only real way to alter the grid to display the schedule for a dual tuner would be to double the number of columns in the table... and that would make the columns very narrow and hard to read. Of course the table could be expanded to be wider than the browser... Then there is a potential issue with the amount of data generated as there are now double the number of cells to populate - which could trigger the memory issues again  But that could be solved by moving back to a 1/2 hour timeslot, rather than the current 1/4 hour one... so there are a few ways.

As a compromise I would suggest that we just mark the slots where more than one tuner is in use. The attached code "may" mark such slots with a red *. It's untested but let me know if it does the trick.


----------



## ThurstonX

john1980 said:


> <SNIP>
> 
> As a compromise I would suggest that we just mark the slots where more than one tuner is in use. The attached code "may" mark such slots with a red *. It's untested but let me know if it does the trick.


Great idea. Obviously, reintroducing the mem issue would be bad. This, combined with PortlandPaw's ToDo shortcut itcl script makes it somewhat convenient to pop into UI's ToDo to see what's scheduled on both tuners.

I assume you haven't changed the logic of the way the Grid is populated, so the last scanned scheduled recording for a time slot is what gets displayed.

Can't wait to try it out. I'll let you know.


----------



## chippyt

I just tested .09 and there is a red asterisk next to the shows that have another show being recorded at the same time. One thing that might help is to be able to click on the asterisk to show what other show is being recorded. Otherwise this is great.

ThurstonX mentioned Portland Paw's todo shortcut itcl. What is that and where can I find it?


----------



## john1980

chippyt said:


> One thing that might help is to be able to click on the asterisk to show what other show is being recorded.


Done. I have just updated the 0.0.9 package so if you download it again it should work.



chippyt said:


> ThurstonX mentioned Portland Paw's todo shortcut itcl. What is that and where can I find it?


I assume he means the one that can be found under "User Interface" -> "ToDo".


----------



## chippyt

I got this error with the revised .09:

INTERNAL SERVER ERROR
--cut here--
action_channelgrid '' 'set "whichChannel" "0";'
can't read "getShowingfsid": no such variable
while executing
"html_link "/showing/$getShowingfsid" "*""
("uplevel" body line 66)
invoked from within
"uplevel $body"
invoked from within
"ForeachMfsFileTrans fsid name type $path $prefix 15 {
set rec [db $db openid $fsid]
set manual 0
set suggestion 0

..."
(procedure "::action_channelgrid" line 262)
invoked from within
"::action_$action $chan $part $env"
("eval" body line 1)
invoked from within
"eval {::action_$action $chan $part $env}"
--cut here--


----------



## john1980

chippyt said:


> I got this error with the revised .09


My bad... have fixed the 0.0.9 package now


----------



## chippyt

I tried the newest .09 and it works great, clickin on the asterisk brings me to the other show that is being recorded. The asterisk is blue now instead of red (minor issue), otherwise great job. Thanks!

Another minor issue, is there a way to put the todo list on the top of the channelgrid, so I don't have to scroll to the bottom. Not sure how others feel.


----------



## john1980

chippyt said:


> I tried the newest .09 and it works great, clickin on the asterisk brings me to the other show that is being recorded. The asterisk is blue now instead of red (minor issue), otherwise great job. Another minor issue, is there a way to put the todo list on the top of the channelgrid, so I don't have to scroll to the bottom. Not sure how others feel.


Now that I know it works I will tidy up and rewrite the code. I'll test the code tonight (I'm in NZ) and release 0.1.0. It will use even less memory, have the todo list at the top, and (hopefully) have a red asterix.


----------



## ThurstonX

john1980 said:


> I assume he means the one that can be found under "User Interface" -> "ToDo".


It's a very small script that puts a link called "ToDo" among the list of links that appears at the top of any TWP page. It's a shortcut to the UI=>ToDo page. He also has one for "Now Showing" (itcl is called All Showing so as now to conflict with the orig; the link shows up just as with ToDo shortcut and is labeled "Now Showing").

Load both into TWP's modules dir and do a Quick Restart.

I found them somewhere on this site. Sorry, don't have them at work or I'd u/l them. Try a broad search for "todo.itcl". I don't think they're available at PPaw's site, though you could check.


----------



## ThurstonX

john1980 said:


> Now that I know it works I will tidy up and rewrite the code. I'll test the code tonight (I'm in NZ) and release 0.1.0. It will use even less memory, have the todo list at the top, and (hopefully) have a red asterix.


Any chance you could add the channel # and call sign to the top of the Grid pages, or is that non-trivial?

TIA.


----------



## ThurstonX

chippyt said:


> I just tested .09 and there is a red asterisk next to the shows that have another show being recorded at the same time. One thing that might help is to be able to click on the asterisk to show what other show is being recorded. Otherwise this is great.
> 
> ThurstonX mentioned Portland Paw's todo shortcut itcl. What is that and where can I find it?


Pretty sure this is it:

http://www.tivocommunity.com/tivo-vb/showthread.php?p=2089706&&#post2089706


----------



## ThurstonX

here's the link to the post that has both All Showing & ToDo mods...
http://www.tivocommunity.com/tivo-vb/showthread.php?p=2601870&&#post2601870


----------



## john1980

Hmm... lots of changes and no access to a TiVo at the moment to test it - so there could be some typo's.

I have altered the way the DualTuner ToDo list should operate. If two recordings are scheduled at the same time then the first one will be displayed with an * that will link to the second recording. If however the second recording overlaps the first (eg the first one runs from 9:00-10:00 and the second recording starts at 9:30) then the first recording will display from 9:00-9:30 and the second recording will be displayed from 9:30 onwards, and be marked with a +.

Sounds complex, and it's not perfect, but should do a reasonable job of handling two tuners. Untested, so probably won't work anyway 

Update: beta attachment removed, see this post for v0.1.0.


----------



## chippyt

The asterisk works great when two shows are set to record and it is red now. I don't have anything to test the + yet, but I will try. Also, can you move the todo list link up to the top of the channelgrid.

Edit: I added a show that recorded from 9am to 11am and on the second tuner another show from 10:30am to 11:00am and it showed the 9am show from 9am to 10:30am and the 10:30 am show from 10:30am to 11:00am. So it appeared to work well, but I didn't see the + sign.


----------



## ThurstonX

Got the *** for two shows starting at the same time. One is 2 hours, the other 1 hour. The 2-hour show was displayed. The 1-hour show was scheduled second. Canceling the second removed the asterisk.

The red plus sign is another matter. Clicking it consistenly gives me this error:

INTERNAL SERVER ERROR
--cut here--
action_showing '/' ''
expected integer but got ""
while executing
"db $db openid $objectid"
("uplevel" body line 5)
invoked from withi
"uplevel $body"
invoked from within
"transaction {uplevel $body}"
(procedure "RetryTransaction" line 5)
invoked from within
"RetryTransaction {
if { [regexp {([0-9]*)/(.*)} $objectid junk fsid subobjid] } {
set showing [db $db openidconstruction $fsid $subobjid]
..."
(procedure "::action_showing" line 24)
invoked from within
"::action_$action $chan $part $env"
("eval" body line 1)
invoked from within
"eval {::action_$action $chan $part $env}"
--cut here--

Also, I record a lot of 15 min cartoons (Adult Swim). The attached screen capture shows two of them back-to-back on the same channel, *+* displayed next to both listings. The first displays correctly to 12:15, or appears to; that may be because the second, scheduled to start at 12:15, overrides it. If I understand the mechanism correctly, overlapping shows would behave this way. Now, technically they can't be overlapping on the same channel, but I'm guessing that's not checked for. Didn't you say, however, that you weren't using 15 min increments anymore? If true, and if you're just looking for start times and ignoring channels, then that might explain the apparent overlap.

I know that sounds convoluted and is based on assumptions about the functionality, but there's more. The attached shows that both shows are really only 15 minutes, but that the second one runs for 45 min in the Grid. So maybe the first show just looks like it runs to 12:15, but if the second were canceled, it would extend beyond that. No point in not trying.....

Sure enough. I canceled both, then went into the Grid to reschedule the first. All the 15 min shows are displayed correctly in that view. Once scheduled, the first appears in the Grid _ToDo List_ as being an hour! (midnight - 1). So that explains the two *+* being displayed. I rescheduled the second and am back to where I started.

Something else I just noticed:
I have a 2-hour recording that starts at 11 PM and ends at 1 AM. While this should have shown an overlap with the first of the above 15 min shows (and with both of them, given that the Grid _ToDo List_ thinks they both run until 1 AM -- yes, I have THREE tuners ;-) ... it does not register that (no ***). Additionally, after canceling both the 15 min shows and freeing up the midnight - 1 slot, the 2-hour recording is not carried over to the next day's column.

Hey! I just noticed the station call letters at the top of the Grid view. You rock!

Lastly, and not a big deal to me, though I see the point, the _ToDo List_ is still at the bottom but is now separated from the main table listings by a blank row.

FYI:
I skipped v.0.0.9 and went straight to the latest. If you think it'd be worth testing 0.0.9, I'm happy to do so.

Can you tell I used to do a lot of software testing....


----------



## chippyt

Just tested 0.1.0c and the todo list is at the top (Thank you). The asterisks are red and work well, but I got the same error as Thurston when clicking the + sign.

Thurston, Thanks for the links to the todo and allshowing modules.


----------



## john1980

Okay, firstly it turns out that I do not have the required information to link a page to the + symbol, so I have removed that. I could add the information in, but it seems a little pointless (as it would just link to the previous grid entry) and would just use up more memory.

The whole grid architecture also works on a 24 hour day, you can specify the start and end of that day (default is 00:00-23:59) but it does not handle entries that carry over the day boundary. So a show that runs from 23:00-01:00 will only show as running from 23:00-23:59, and the 00:00-01:00 slot will be free. The only way of fixing that would be to look at the previous days entries as well as the current day - while would slow things down and complicate matters some. The facility is in there to display days from say 19:00-18:59 if need be (alter the HOUR_START variable within the code of the module), but it would still crop a show that ran from 18:00-20:00.

There will also be an oddity if a recording is schedule from say 07:00-09:00 and then a shorter recording is scheduled from 07:30-08:00 as the second show will look like it will run from 07:30-09:00 (it should be marked with a + however).

The whole ToDo grid works off the times and durations shown in the ToDo listings, so any anomaly in the listings will also be displayed in the grid. I think the current situation is pretty much as good as it will get without going to too much trouble.


----------



## ThurstonX

john1980 said:


> Okay, firstly it turns out that I do not have the required information to link a page to the + symbol, so I have removed that. I could add the information in, but it seems a little pointless (as it would just link to the previous grid entry) and would just use up more memory.
> 
> The whole grid architecture also works on a 24 hour day, you can specify the start and end of that day (default is 00:00-23:59) but it does not handle entries that carry over the day boundary. So a show that runs from 23:00-01:00 will only show as running from 23:00-23:59, and the 00:00-01:00 slot will be free. The only way of fixing that would be to look at the previous days entries as well as the current day - while would slow things down and complicate matters some. The facility is in there to display days from say 19:00-18:59 if need be (alter the HOUR_START variable within the code of the module), but it would still crop a show that ran from 18:00-20:00.
> 
> There will also be an oddity if a recording is schedule from say 07:00-09:00 and then a shorter recording is scheduled from 07:30-08:00 as the second show will look like it will run from 07:30-09:00 (it should be marked with a + however).
> 
> The whole ToDo grid works off the times and durations shown in the ToDo listings, so any anomaly in the listings will also be displayed in the grid. I think the current situation is pretty much as good as it will get without going to too much trouble.


Very sensible, esp. since it's e-z enough to check the UI ToDo page. Looking forward to the next build.


----------



## john1980

This version uses even less memory as well as supporting different grid resolutions. By default this module uses a 15 minute grid. This slows down the creation and drawing of the table as for cells must be created for every hour. If you wish to speed up the drawing of the table then you can set the GRID variable (found within the module) to 1800 for a half hour grid.

Update (v0.1.2): When larger timeslots are used (eg half hour and full hour) it is likely that more than one show may appear in a slot. The grid now displays * for additional shows within the same timeslot. If you hover the mouse over the symbol then the title will be displayed, and if you click on it then you will be taken to that showing.


----------



## Juicy

Is it possible to force ChannelGrid to display specified channel #s, instead of all of them? It would be nice to get rid of undesired channels, like the PPV ones, in the display.


----------



## john1980

Juicy said:


> Is it possible to force ChannelGrid to display specified channel #s, instead of all of them?


There are many ways... I will add an option in the code that will both allow you to list the channel numbers that you wish displayed, if this list is empty then it will display all of them. Will also allow a setting so that just the 'favourites' are displayed. Might also allow these settings to be stored in a configuration file so that new versions of the module will not have to be edited each time they are loaded.


----------



## john1980

This has support for filtering the channels that are displayed in the initial list. By default it will now only display your favourite channels, however the CHANNEL_FILTER variable can be used to alter exactly which channels are displayed.

This variable, as well as the GRID resolution, can be set in either the module or in a configuration file (channelgrid.cfg) which should also be located in the "modules" directory.

Example modules/channelgrid.cfg file:


Code:


set GRID  900
set CHANNEL_FILTER  "101 102 131 145"


----------



## john1980

This version will mark the timeslots that are scheduled to be recorded. This should make it easier to see which shows will be recorded when looking at the grid for a particular channel, without having to switch to the "ToDo" grid.


----------



## ThurstonX

john1980 said:


> This version will mark the timeslots that are scheduled to be recorded. This should make it easier to see which shows will be recorded when looking at the grid for a particular channel, without having to switch to the "ToDo" grid.


Nice touch.


----------



## john1980

Sorry  You can blame both this and the last version on a friend of mine who suggested them... was not even going to bother with this one, but after playing with it I found it quite handy!

Anyway, this version allows you to change the starting day of the grid. Rather than always start on a Monday it is now configurable. By default this version will start the grid at "yesterday".

The new setting is called START_DAY and can be placed in a configuration file (modules/channelgrid.cfg) if you wish to alter the default.


----------



## SeanOffShotgun

john1980 said:


> Sorry  You can blame both this and the last version on a friend of mine who suggested them...


Hey, are you flaming me?! I suppose at least you consider me a friend. 

Just loaded v0.1.5 and I like it!

Now to put my thinking cap on and come up with some more enhancement ideas to humbly request.

Kia ora.


----------



## chippyt

I just tried v0.1.4 and it will show a red outline around shows that are scheduled to record, but only if they are on the channel being viewed. For example, I have a show from 6am to 7am scheduled to record on channel 9, when I view channel 9 I see red boxes around 6am to 7am, but if I view channel 2 I don't see the red boxes indicating that something is being recorded in that timeslot on a different channel. 

This behavior may be what you were intending. If so, I think it is great, but I think it would be interesting to add a red box around shows being recorded on that channel, but maybe another color box to indicate that something is being recorded in that timeslot on another channel.

This is a great module, I use it just about every day. Thanks!


----------



## john1980

chippyt said:


> I just tried v0.1.4 and it will show a red outline around shows that are scheduled to record, but only if they are on the channel being viewed.


This is what was intended.



chippyt said:


> I think it would be interesting to add a red box around shows being recorded on that channel, but maybe another color box to indicate that something is being recorded in that timeslot on another channel.


I started looking into this, and was going to pick yellow as a suitable colour, but there is a bit of a problem. Essentially it can be done, but it would slow down the whole creation process quite drastically... I will have a play with it to see just how slow it will make it (currently it looks like it could be up to four times slower). If it is too slow then I will make it a optional feature.

If you are interested, the issue is that if there is a show that runs from 7pm-8pm and you have a recording on a different channel for a show that runs from 7:30-8:30pm then it will not be marked. This is because the entry on the grid will be spanning four timeslots (7:00,7:15,7:30,7:45) and bypass the lookup for anything starting in the 7:30pm timeslot. This means that when the grid entry is created, rather than just checking for things starting in the 7:00-7:15 slot, it will also need to check the 7:15-7:30, 7:30-7:45 and 7:45-8:00 to see if there are recordings scheduled to start within them.

Will see what I can do... there are other ways of doing the same thing, but they would be even slower (multiple database lookups).


----------



## john1980

I am a little reluctant over this release... but it will be quite handy for those of you who use this module to schedule recordings. There is a new configuration option called MARK_RECORDINGS which can be set either in the module, or in a configuration file.

If this variable is set to 1, the timeslots that are going to be recorded will be marked with a red border. If set to 2 it will also mark timeslots that contain recordings on other channels with a yellow border. If set to 0 then this feature will be turned off - which will speed up the grid creation by 8 seconds. (currently, the default setting is 2).

The following is an example configuration file which should be called channelgrid.cfg and be placed with the module in the modules directory, which will turn this off (and speed things up):



Code:


set SHOW_DESCRIPTION "false"
set GRID 900
set CHANNEL_FILTER "fav"
set START_DAY "yesterday"
set MARK_RECORDINGS 0

Update: Release 2 has improved logic concerning the marking of recordings. Am also looking into how to indicate (along with the yellow border) which particular recording clashes with that timeslot. The issue is with the limited memory... as this would require yet another array... All of the internal arrays can be made much smaller, but at the cost of speed.


----------



## chippyt

Just tried v0.1.6 and it works great. I like the different colors for recordings. As I think you mentioned in a previous post, a half hour show being recorded on another channel is shown as a hour show. I have a show that starts at 4:00pm and is 30 minutes, but is highlighted in yellow at one hour. But not a big deal, great improvement.


----------



## jblake

Ok, so a yellow border means there's another show recording in that timeslot. What is the implication for dual tuners, is there perhaps a way to show a timeslot that has two recordings scheduled when run on a combo?


----------



## john1980

Includes added support for dual tuners. If MARK_RECORDINGS is set to 3 (default) then it will mark the timeslots which have two recordings on different channels with a solid yellow border.

So to recap... a dashed red border is a recording on the viewed channel, a dashed yellow border is a recording on another channel, and a solid yellow border is more than one recording on different channels. There is a legend displayed for all markings that are used on a page.

Update: Release 2, Added a link to the ToDo list at the bottom of the page. Release 3 has cleaner code and uses smaller fonts for the progress messages when building the grid. Release 4 includes a fix to get the legend displaying correctly under IE. Release 5 uses html_link code for all hyperlinks.


----------



## ThurstonX

john1980 said:


> Includes added support for dual tuners. If MARK_RECORDINGS is set to 3 (default) then it will mark the timeslots which have two recordings on different channels with a solid yellow border.
> 
> So to recap... a dashed red border is a recording on the viewed channel, a dashed yellow border is a recording on another channel, and a solid yellow border is more than one recording on different channels. There is a legend displayed for all markings that are used on a page.


Good stuff, as always. But...
...and I'm only half joking here...
what about a way to indicate that there's something recording on a different channel at the sametime, or within, a dashed red broder. For example, I'm looking at Fox Soccer Channel, and it shows a dashed red for 7:30 - 10:00. But there are one or two other recordings on one or two different channels within that block. Red-Yellow-Red-Yellow, etc.? Blue? Paisley???

http://images.google.com/images?q=Paisley&hl=en&lr=&sa=N&tab=ii&oi=imagest

Perhaps that's asking a lot, but damn you're willing to crank out those revisions, so I had to ask ;-) I can certainly live without it, but it is an addressable scenario, or seems to be, since you've done it with the solid yellow. You can berate me in a PM, as you see fit 

A simpler, perhaps more useful addition, would be a link to the Grid To Do page at the top and bottom of each channel page. I love the addition of the days of the week at the bottom, btw (just noticed that; may have been there for a while; I'm slooooow, eh?).


----------



## john1980

ThurstonX said:


> what about a way to indicate that there's something recording on a different channel at the sametime, or within, a dashed red broder. For example, I'm looking at Fox Soccer Channel, and it shows a dashed red for 7:30 - 10:00. But there are one or two other recordings on one or two different channels within that block.


I guess I was actually looking at it from a functional point of view. When people view a channel and they see a show they like, they typically just want to know if that show is being recorded or not (hence this is indicated by the red border). It was then pointed out that if that show is not being recorded it would be handy if the user knew if they would be able to record it (eg is there another recording happening at the same time - hence the yellow border). Of course those with dual tuners need to know if both are being used at that point in time (hence the solid yellow border).

Initially it was just a matter of "RED=Is being recorded", "YELLOW=can not be recorded as something else already is". Doing anything different could get a little complex, and just duplicate what is already being handled (in a much better way) by the ToDo grid.

I have added a link to the ToDo grid to the bottom of the page and update the current version (v0.1.7r2). I will look at a nice way of adding it to the top without causing too much real-estate to be lost.


----------



## jblake

great turnaround on the suggestion. awesome job, this is making it very easy to rebuild my season passes from the move from cable DVR back to directivo (and even find some new shows).


----------



## wrupp

I've noticed when I choose the "All channels" option I don't get all my channels. The filter is still in place. It appears to only show channels in the "Channels I recieve" list.

Any Ideas how to get this to show all the channels again?


----------



## john1980

wrupp said:


> I've noticed when I choose the "All channels" option I don't get all my channels. The filter is still in place. It appears to only show channels in the "Channels I recieve" list.
> 
> Any Ideas how to get this to show all the channels again?


You could try adding the channels to those that your receive? The module has not changed how it gets the list of channels since cwingert's original v0.0.1, it is still using the "channeltablenum" array, so if things have changed then I would say that TivoWeb has changed which channels it is storing in this array.

It uses the following code (found at line 811 in v0.1.7r4, and line 32 of the original v0.0.1):


Code:


    foreach num [lsort -real [array names channeltablenum]] {
        ...
    }

If you are running TivoWebPlus 1.1beta then there is an array called "channeltablenum_alt" that holds the channels which are not on your receive list. This could be used to pad out the list by replacing the above code with:


Code:


    set channelnumlist "[array names channeltablenum] [array names channeltablenum_alt]"
    foreach num [lsort -real [array names channelnumlist]] {
        ...
    }

_*This is unlikely to work if you are running a production version of TivoWeb (eg TW 1.9.4 or TWP 1.0) as I do not think they define this array.*_


----------



## jjaromin

I'm having a problem running the channelgrid module remotely. I have 2 TiVo's which both run Tivowebplus w/channelgrid installed. I access #1 tivo using http://ipaddress/hdtivo/ and #2 tivo using http://ipaddress/sdtivo/. This works fine as I have put the hdtivo and sdtivo into the prefix value in the tivoweb.cfg file and have configured apache to goto the correct tivo when these addresses are used. The problem is, channelgrid does not keep the prefixes when creating its HREF links. Is there any easy way to get this data imported... (ie. what do I need to replace in order to get this to work.) I can already find where the links get created, but I have no experience in programing... well, just about anything.

Thanks for any help.
John


----------



## john1980

jjaromin said:


> I'm having a problem running the channelgrid module remotely. I have 2 TiVo's which both run Tivowebplus w/channelgrid installed. I access #1 tivo using http://ipaddress/hdtivo/ and #2 tivo using http://ipaddress/sdtivo/. This works fine as I have put the hdtivo and sdtivo into the prefix value in the tivoweb.cfg file and have configured apache to goto the correct tivo when these addresses are used. The problem is, channelgrid does not keep the prefixes when creating its HREF links.


Okay the 0.1.7r5 in the previous post should fix this.


----------



## jjaromin

john1980 said:


> Okay the 0.1.7r5 in the previous post should fix this.


Ok, thanks... Just tried it out on my T60 and HD tivo and they both work great.

Thank you for the great module.

john


----------



## NFLnut

^bttt^


----------



## slidervf101

Cwyngert - I'm excited about your channelgrid module, but can't seem to get it to work on my T-60. Each time I load the mdule, I get this:

INTERNAL SERVER ERROR
--cut here--
action_channelgrid '/' ''
expected integer but got "43.1"
while executing
"lsort -integer [array names channeltablenum]"
(procedure "cg_show_stations" line 12)
invoked from within
"cg_show_stations $chan"
(procedure "::action_channelgrid" line 13)
invoked from within
"::action_$action $chan $part $env"
("eval" body line 1)
invoked from within
"eval {::action_$action $chan $part $env}"
--cut here--

Any suggestions?


----------



## john1980

slidervf101 said:


> Each time I load the module, I get this:
> expected integer but got "43.1"


I am guessing you are running a very old version. Any of the more recent versions will resolve your issue (consider using the latest version in this post)


----------



## billnbell

I click on the module and get:

INTERNAL SERVER ERROR
--cut here--
action_channelgrid '/' ''
expected integer but got "22.1"
while executing
"lsort -integer [array names channeltablenum]"
(procedure "cg_show_stations" line 12)
invoked from within
"cg_show_stations $chan"
(procedure "::action_channelgrid" line 13)
invoked from within
"::action_$action $chan $part $env"
("eval" body line 1)
invoked from within
"eval {::action_$action $chan $part $env}"
--cut here--


----------



## john1980

billnbell said:


> I click on the module and get:
> INTERNAL SERVER ERROR
> action_channelgrid '/' ''
> expected integer but got "22.1"


I am guessing you are running a very old version. Any of the more recent versions will resolve your issue (consider using the latest version in this post)


----------



## mskreis

john1980 said:


> I am guessing you are running a very old version. Any of the more recent versions will resolve your issue (consider using the latest version in this post)


Yes, the latest version appears to work well. I'm using it successfully on 2 different Zippered devices.


----------



## jacobhdds

Thanks, this script works succsessfully on a series 2 with 7.2 software.


----------



## bigrig

Thanks for making this great module, I love it!

Got a question:


Code:


# Show Episode Descriptions
   # ========================================================
   # Leave this set to false if you do not want the episode descriptions
   # to display in the schedule.  This will greatly reduce the risk that
   # this module will cause a reboot due to high memory utilisation.
   #
   # Change this value to "hover" if you wish to have the description
   # available when you hover over the episode.  Change the value to
   # "true" if you wish to have the description displayed within
   # the grid.

How likely is this reboot due to not enough memory? I would like to have the mouse-over descriptions.

This is on a HR10-250 running 3.1.5d, if that makes a difference.

Thanks, 
Matt


----------



## john1980

bigrig said:


> How likely is this reboot due to not enough memory? I would like to have the mouse-over descriptions.


It really depends a lot on your guide data (and how much memory other TivoWeb modules are using). If every show has a long description then it could run into trouble. Essentially it has to do with the limited POOLSIZE available in the TCL Shell (so you should also check that you have a line at the top of your tivoweb script that reads "export TIVOSH_POOLSIZE=2916352", or you could even try increasing it to 3244032).

If you would like the hover funtionality then turn it on. You will know if it does reboot as when you go to display the Channel Grid it will take more than half a minute to draw (during which time the Tivo will be rebooting). I was toying with the idea of compressing the strings stored within the TCL shell and uncompressing on the fly, as they are output


----------



## don99

Disregard this error report.. the third reload of Tivoweb+ seems to have solved it. I wil leave the original message below in case someone else sees the same thing..
in which case I guess you should RELOAD RELOAD RELOAD! 

Kewl Module but when I click on the shows in the grid I get this:

INTERNAL SERVER ERROR
--cut here--
action_showing '/3978184/16' ''
can't read "cache_sp_moddate": no such variable
while executing
"if {$spmoddate == "" || $spmoddate == $cache_sp_moddate} {
return
}"
(procedure "update_sp_cache" line 16)
invoked from within
"update_sp_cache"
(procedure "::action_showing" line 45)
invoked from within
"::action_$action $chan $part $env"
("eval" body line 1)
invoked from within
"eval {::action_$action $chan $part $env}"
--cut here--

However I also get the same error using the WHATSON module..

The log shows this:
.... stuff before....
etrying after errTmActiveLockConflict ...
NONE no such object: {CONFLICT err=errTmActiveLockConflict}
while executing
"dbobj $station fsid"
("uplevel" body line 7)
invoked from within
"uplevel $body"
invoked from within
"transaction {uplevel $body}"
(procedure "RetryTransaction" line 5)
invoked from within
"RetryTransaction {
set channelobj [db $db openidconstruction $id $subid]
set record [defaultval 1 [dbobj $channelobj get Record]]
..."
(procedure "init_channelindex" line 70)
invoked from within
"init_channelindex"
(file "/hack/tivowebplus-1.2.1/modules/index.itcl" line 736)
invoked from within
"source $module "
..stuff after...

SO I guess my problem is elsewhere.. did a full reload. I'll keep looking but clues are welcome.

Phillips SA1 with latest Tivowebplus, channelgrid module 07/03/2005 - v0.1.7


----------



## john1980

That error is produced by the index.itcl module... seems to be as a result of it not having cached the SeasonPass information before trying to use it. Something must be calling mod_sp_cache() before a call to init_sp_cache() has been made... rather odd...

You should have seen a message in your /var/log/tivoweb.log file that reads something like "-initializing season pass cache<n>", but it may have had trouble and given the following error: "-error initializing season pass cache; aborted".


----------



## don99

Thanks..
I don't recall those messages but since a reload fixed it I didn't save the log.
Seemed to me like a routine was timing out, but once I got a reload without that happening all was well.


----------



## PeterK18

I'm using two Thomson TiVo, UK Series 1 Standalone, software 2.5.5-01-1-023 with TivoWebPlus v2.0.0 (oztivo-070325) and Hackman 5.3.0

As a Newbie I used Hooch! to hack both my Tivos, and subsequently added TWP and Hackman.

All seems to work well, except that in TWP's Channel Grid (main top menu), the Day shown at the top of each column is one day out - i.e. the programmes for Sunday 25th March are in the column headed Saturday 24th March etc... If I select one of the programmes to be recorded it works properly.

If I go via UI, Chanlist, select a Channel and view listings, the correct programmes for each day are shown.

Needless to say, the Tivos (both are the same) have the correct current time & date and everything has been restarted/rebooted more than once to check.

Any ideas welcome please!


----------



## john1980

PeterK18 said:


> I'm using two Thomson TiVo, UK Series 1 Standalone, software 2.5.5-01-1-023 with TivoWebPlus v2.0.0 (oztivo-070325) and Hackman 5.3.0.
> 
> All seems to work well, except that in TWP's Channel Grid (main top menu), the Day shown at the top of each column is one day out - i.e. the programmes for Sunday 25th March are in the column headed Saturday 24th March etc... If I select one of the programmes to be recorded it works properly.


When you first click on ChannelGrid, and displays the channel list, what does the status line read at the bottom of the screen (in particular I am after what the value of tzoffset is).


----------



## PeterK18

Hi,

On both my Tivos the Status line says *v0.1.7r5 (tzoffset 3600)* which seems correct as we are currently on GMT+1. However the column heading is one day out, as described.

The Tivos themselves of course show programmes at the correct day & time and going via UI, Channel List shows them at correct Day & time.


----------



## john1980

PeterK18 said:


> On both my Tivos the Status line says *v0.1.7r5 (tzoffset 3600)* which seems correct as we are currently on GMT+1. However the column heading is one day out, as described.


Sorry, I seem to have missed this post. I have attached a version of the module that should fix this. You may also wish to look at upgrading to TivoWebPlus v1.3.1 or even the newer v2.1.0 (bundles available here).


----------



## PeterK18

Thanks for the update, but when I run the new ChannelGrid I get an error:

INTERNAL SERVER ERROR
--cut here--
action_channelgrid '' ''
can't read "::global_channelgrid_link": no such variable
while executing
"html_link $::global_channelgrid_link $::global_channelgrid_version"
(procedure "cg_show_stations" line 36)
invoked from within
"cg_show_stations $chan $CHANNEL_FILTER"
(procedure "MOD::action_channelgrid" line 132)
invoked from within
"$cmd $p1 $p2 $p3"
(procedure "do_action" line 19)
invoked from within
"do_action $action $chan $part $env 1"
--cut here--



I am currently running TivoWebPlus Version 2.0.0 (oztivo-070901)

Peter


----------



## john1980

PeterK18 said:


> Thanks for the update, but when I run the new ChannelGrid I get an error...
> 
> I am currently running TivoWebPlus Version 2.0.0 (oztivo-070901)


The posted module should work okay with TWP v1.9.4 compatible versions (ie TW and TWP v1.3.1). EDIT: Some changes are require to v0.1.8 to work with TWv1.9.4 (see this post)
The updated module has been included in the latest TWPv1.3.1 and TWPv2.1.0 bundles, but has not been backported to TWPv2.0.0 (as all work is currently being done on the new v2.1.0 version). I would suggest trying v2.1.0 (bundle available here) and seeing how things go. If you have any problems feel free to post on the development thread


----------



## dickp

I just installed v0.1.8 to fix the 'wrong day' issue on a UK tivo with DST set. I also had a few issues with undeclared variables in the new script, when 0.1.7 worked fine.

To fix them, I changed the single instance of $::lang == "en" back to $::uktivo, and commented out each 'if ($::version >= 3)' stanza. The script now works for me.

I'm running tivoweb-tcl v1.9.4


----------



## john1980

dickp said:


> I just installed v0.1.8 to fix the 'wrong day' issue on a UK tivo with DST set. I also had a few issues with undeclared variables in the new script, when 0.1.7 worked fine.
> 
> To fix them, I changed the single instance of $::lang == "en" back to $::uktivo, and commented out each 'if ($::version >= 3)' stanza. The script now works for me.
> 
> I'm running tivoweb-tcl v1.9.4


Sorry about that, I should have realised that some of those variables were introduced in later versions (it's been so long since I ran TWv1.9.4!). Thankyou for documenting the changes required, I have updated the previous post with the changes and called it ChannelGrid_0.1.8r1.zip.

You may also wish to give either TWPv1.3.1 or TWPv2.1 a go to see if they work in your situation. TivoWebPlus is a much improved version with many nice features and include many modules - however there are some UK specific modules which are missing (digiguide, etc). Information on where to get the bundles and the appropriate forums to post feedback to can be found here.


----------



## bobef90

HI
Just got my Network card installed - and working!!!!
Can somebody tell me where I put this module (politely)
do I have to rename it - it's a txt file?
Having just dropped in in the only modules directory I can find - nothing has happened or appeared.

THanks

Bob


----------



## john1980

bobef90 said:


> HI
> Just got my Network card installed - and working!!!!
> Can somebody tell me where I put this module (politely)
> do I have to rename it - it's a txt file?
> Having just dropped in in the only modules directory I can find - nothing has happened or appeared.


You will need to restart TivoWeb for it to pick up the new module. There may also be some information in the /var/log/tivoweb.log file while may be of use.

This module is also included (along with many other useful modules) in both v1.3.1 and v2.1 of TivoWebPlus found here


----------

