For awhile, I've wanted to try my hands at writing a gadget for the Windows Sidebar in Vista, but I could never come up with a project idea that was small enough to accomplish and useful enough to justify. Since we recently added two TiVo HD units to our home network, I thought it'd be handy to expose their Now Playing lists. I knew the data was available over our home network, because the TiVo Desktop software displays a lot of it. Turns out, the TiVo Developer Resources section of their site contains just enough to get going.
Without going into too many details, recent versions of the TiVo software on certain units (TiVo HD and TiVo Series3 HD, I think) contain a small web server that can be issued requests. These requests are passed via the query string and return their results as XML. For example, our downstairs TiVo unit has an IP address of 192.168.1.104 (you can find the IP address of your TiVo by navigating to Messages & Settings, then Settings, then Phone & Network). If I open my web browser and navigate to https://192.168.1.104/TiVoConnect?Command=QueryContainer, I'll receive an XML response that includes information like the title of the unit and a URL to obtain the current Now Playing list.
If you try this same request with your own TiVo (using the correct IP address, of course), you will first run into a security certificate warning. If you decide to continue, you'll then be asked for credentials. The user name is always tivo, and the password is your media access key. Your media access key can be found in the right column by logging in to your TiVo account online or by navigating to Messages & Settings, then Account & System Information, then Media Access Key on your TiVo. For a more "friendly" Now Playing list, you can also navigate to https://192.168.1.104/nowplaying/index.html using a similar procedure.
When I started writing the TiVo gadget, I could not successfully complete an XMLHttpRequest for the XML data because of the certificate warning (which I couldn't see, since this was all happening behind the scenes of the gadget). I soon figured out that the actual certificate is issued to the service number of the TiVo unit, but since the requests are being made to an IP address instead, the mismatch causes the warning. It's kind of like saying that I trust Mike Swanson, but I don't trust Swanson, Mike (same person, but represented differently). Ideally, then, I would want to issue my request to the service number of the TiVo so that the certificate would match.
On most networks, you can reach a machine by its IP address and its name; that's because the machine shares its name on the network. Unfortunately, the TiVo doesn't share its name (the service number) on the network like other devices. To resolve this issue requires a few steps, and if you decide to download and try the TiVo Now Playing gadget, you'll need to perform them:
Whew! Sorry that you had to go through all of that, but I'm not aware of any other method (short of possibly installing a custom ActiveX control) to get around this certificate issue. TiVo could solve the issue by broadcasting its service name on the network. Perhaps they'll do that in a future version of their software.
Assuming you've made it this far, you can download the TiVo Now Playing v1.0.1 gadget (182KB) and install it on your Windows Sidebar. Click the little "wrench" icon to configure the gadget. Enter your service number in TiVo address(es), and your Media access key. If you have more than one TiVo on your home network, you can enter multiple service numbers separated by semicolons. Note that all TiVos in a single household share the same media access key, so you only need to enter one of those.
This post is already rather long, so I'll quickly summarize the current gadget features:
I'm sure there's more I could say, and I'll probably say it in a future post. Please enjoy the gadget, and pass along any comments, suggestions, or questions via e-mail or by leaving feedback.
Update: If you downloaded version 1.0 of the gadget and you're not seeing any of your programs listed, please try version 1.0.1. Hopefully, this will fix the issue.
Great gadget - got it installed and followed your instructions however, I only get the name of the TiVo and zero behind it - it does not access any of the Now Playing List.
Will have to try the steps again I guess to see if I can get it to read.
Thanks, Richard. Since I've only been able to test this on my two (identical) TiVos, I have no idea how well it will work across software versions and different units. Feedback will be critical to get it working properly. If you see the "friendly name" of your TiVo on the gadget, that means that it's successfully talking to the TiVo, and that's goodness. Any more information you can provide to help diagnose would be very useful.
This interface exists on all Series2, Series2DT, Series3, and TiVo HD units. It has been there since TiVoToGo was first introduced a couple of years ago. It should be consistent across all of the units, as there are a number of official and third party tools that connect to this interface.
This is a great idea! I tinkered at some point with converting my recording listing to RSS, but never thought about writing a Vista gadget :).
Unfortunately, I have the same problem as previous poster - name of my Tivo appears correctly, but then it displays 0 for the number of recordings. I have repeated and checked steps listed to no avail. I can access my Tivo recordings by other means, like (for example) directly going to "https://xx.xx.xx.xx/nowplaying/index.html".
Hmmm...thanks for the additional insight, szczesnyb. If you login to your TiVo account online, can you verify that "Allow Transfers" is enabled for your TiVo unit? I'm wondering if this is what is causing the issue.
My account has the Transfers Allowed selected at Tivo.com
What can I do to help the troubleshooting. Me and szczesnyb can be come beta testers!
I'm having the same problem as szczesnyb - 0 items listed. "Allow Transfers" is enabled. After installing your gadget and having the problem, I installed TiVo's "DeskTop TiVo" and it worked first try.
A minor point, I'm using 120dpi large type and when setting options the page is too short, you can only see to top pixels of the "Sounds" checkbox. I had to switch to 96dpi to see it.
I get same behavior as Richard Hay. My Tivo is a Series2 rather than a TivoHD.
I think there must be a different behavior between the TivoHD vs. Series2. Here's the XML response I get from my Series2...
x-tivo-container/tivo-serverx-tivo-container/tivo-dvrUpstairs Tivo101x-tivo-container/tivo-videosx-tivo-container/tivo-dvrUpstairs TivoUpstairs Tivohttps://540-0001-7027-xxxx:443/TiVoConnect?Command=QueryContainer&Container=%2FNowPlayingx-tivo-container/tivo-videos
As far as the configuration is concerned, everything is enabled and I can transfer recordings to and from my computer.
I took a (very) quick glance at your code (I hope you don't mind) and I can't find anything wrong. I checked the XML you're getting and when I request it manually from my Tivo it looks OK to me.
Same problem here - Getting the DVR name but no recordings. I'm using a Series 2 and I checked to make sure *Allow Transfers* was enabled. I was able to hit a few different URL though the REST interface and even managed to download a recording. I had no idea TiVo had made it this easy to work with!
Thanks for the quick feedback, everyone. If I'm basing success on the comments alone, it sounds like nobody has been able to get this to work. I'm going to try an installation on another clean maching to see what's up.
Well, that's frustrating. I just went through all of the steps on a fresh new Vista machine in the house, and everything worked just fine. Has anyone been able to get their Now Playing list to show?
It wonder it has something to do with the way you parse and display the returned XML file. When I switch to the options page and press OK it takes about 12 sec to switch back to display. It takes 4-5 sec to download and display in IE7 the NowPlaying XML file and about the same time to download and display in IE7 the Now Showing Index text file. Both look OK.
I could zip up and eMail you the 3 files returned in IE7 if that would help but I would need your eMail address.
HarryVT...thanks for the offer. If you send me an e-mail via the e-mail link in the upper-right, I'll respond. Then, you can attach the files. The parsing time is a little longer than I'd like too, but I don't suspect that's causing this issue.
Works great here with Vista Ultimate and a TiVo HD box.