Overview -------- This is an application I created to make it easier for me to get shows off the Tivo. I first got the bug in me to create this when there was a marathon on the satellite, and it was just painful to keep up with the Tivo. Although other tools exist to get shows off the Tivo, it is difficult to get more than one show out of the Tivo at a time. I wrote this as the next step towards writing a Windows Media driver that would get shows off the Tivo. What is This? ------------- This application is a combination of ConvertStream, netmplex, and a Windows based UI in front of telnet to get shows off the Tivo. If consists of a TCL script that creates the Now Showing list as XML, and an MFC application that talks to the Tivo via telnet to run the script. Once the list of shows are downloaded from the Tivo, it is presented in a Windows list view, where who can select one or more shows, and then from a menu, choose to extract the shows. It is that easy. You can get details about the shows simply by clicking on them, which uses the TivoWeb server to get the details about the show. When you extract the shows from the Tivo, you have your choice of either extracting the raw tyStreams, or you can create an MPEG file as the show is being downloaded. In addition, this application has a ConvertStream mode, where it can take one of more raw tyStream files and create an MPEG file. This is essentially a file based version of netmplex. I exposed the ability to save to the raw tyStream data for two reasons: first, that not many people outside of Tivo knows the precise format of the tyStream, so if we learn more about the format, it is possible at some later point to come back and re-encode the stream into an MPEG or some other format. The second reason for exposing the raw tyStreams is that I have not yet purchased a DVD recorder, and the complete tyStream is too big to fit onto a single CD. Thus, I can burn the components of the tyStream onto a CD and later create the MPEG show if I want. Extracting tyStreams gives you two modes of operation: you can either create a single file, which is a the entire raw stream off the Tivo, or you can create multiple files, each representing an individual FSID from the Tivo. Extracting to MPEG is the one stop shopping. In this mode, you merely select the shows you want to extract, and in a little more time that is takes to extract the show from the Tivo, you have a finished MPEG file. What you Should be Aware of --------------------------- This application has several limitations. First, there is the option to extract to best quality for MPEG. However, turning this option off seems to result in poor quality. This relies on netcat to send the data from the Tivo to your PC. I've posted a copy of it up my Web page. To extract the details of the show, this relies on the TivoWeb server. It may work with the httpd.tcl that was supplied with ExtractStream, but I have not tried that. This includes a modified version of ExtractStream, based on the 0.3 version from CVS. I found a bug in ExtractStream where it was taking one too many chunks off of the Tivo, resulting in some of the bogus sequence errors. Finally, I am putting this out now for two reasons: because I opened my mouth and people are getting interested in it, and second, because I am likely about to start on a .NET exploration project that will likely take up what free time I had. It is not quite as polished as I would like, but I don;t know if I'll have the time to really finish this. It does the job I need. Bugs ---- A few bugs I have not yet fixed: If you close the MPEG extract status window, then subsequently quit the application, you will get a fault. The MPEG extraction window really should tell the Now Showing window that it is going away. There seems to be a huge memory leak when you exit the application. For whatever reason, I could not get the OnClose to go to my view for the Now Showing window. I haven't been doing a lot of MFC UI work for the last few years, so it is probably something stupid. Acknowledgements ---------------- Much of the central part of handling the streams from the Tivo was not done by me. For this you can thank Nick Hull and his masked cohorts, who brought us ExtractStream. Related to that is the ConvertStream code, for which Gary Steele. That work of course was pioneered by Andrew Tridgell and then D18C7DB. The tcl script was based on code from the TivoWeb project, and for that we can thank Stephen Rothwell (sfr@canb.auug.au), Jon Squire (jsquire@justice.loyola.edu), Josha Foust (tivoweb@lightn.org), Mike Baker (mbm@linux.com) Mike Byrne (Turbo) and John Paglierani (John@Paglierani.net). If I missed anybody, it is purely unintentional.