How to Create a Real Media Server with Tivo and pyTivo

Though I’ve used TiVo for some time, and though I’m really quite fond of it (we actually have two), it’s done little more than whet my appetite for the day that I can create an actual media server. Up until recently, the problem has been that the TiVo itself does a great job at what it does – but what it does is make you realize how clumsy all those other interfaces are at providing you with access to your data.

The primary downfall of the TiVo is that storage space is limited. Older boxes had terribly small hard drives. Newer ones have larger hard drives (while the Series 3 has a mongo hard drive), and just about ever since they came out, you’ve been able to expand the capacity of the device. But movies are just so big. Even though you don’t have to record at best quality to get a decent recording, a movie at high quality will take up 3 to 5 gigabytes, and that means your drive is going to fill up fast. Surely there has to be an answer. Luckily, I’ve finally found it.

My first thought was TiVo Desktop. And this really isn’t a bad idea. The only problem is that it somewhat limits you in what you can do because you’re taking video off of the TiVo in the proprietary TiVo format. You can get into whatever argument you like about digital rights management (DRM) – I’m not going to go there. After installing the TiVo Desktop software, you can view videos – but what about devices that don’t support it (as there are a few). Then you’re out of luck. So you’ve just encountered the second limitation.

Another potential problem here is that once you start transferring those larger movies, you run into the issue that your computer hard drive may run out of space. Luckily, this is easy to get around. I noticed in the paper that one large retailer was offering a one terabyte drive for under four hundred bucks. That’s huge. I just so happen to have an Infrant ReadyNAS NV+, giving me the option to swap out drives when larger ones become available. For now, I have over 2 terabytes of fully fault-tolerant storage on our home network in a nice little package (a good bit over half of it is unused). For most, this is probably overkill. I like it. You may or may not need this amount, or the fault tolerance, but it is an option.

Up until now, you may have noticed that I’ve only talked about saving data off of the TiVo. What about – gasp – putting data back onto the TiVo? This is where things really get dicey. You can actually use the function of the TiVo Desktop software whereby it will act as a standalone TiVo, showing up in your Now Playing List (NPL), allowing you to transfer data back to the TiVo. And this is why you need all that offline storage. But you can only support certain formats. Naturally, the TiVo format works, but for just about anything else, you’ll need to convert it.

For this, the Videora TiVo Converter works well. It converts just about anything thrown at it into a format understandable by the TiVo. You can then place this into the folder used by your TiVo Desktop/Server, and you’re set. But it is a bit slow, and you have to convert a lot of data. So it’s not ideal. At least it’s free (though donations are helpful). It also chokes on some video, so it’s not the perfect solution.

I kept digging.

The next prospect was Tivo.Net. This is a piece of software that can install in Windows or under Mono on those flavors of Linux that support Mono (including Ubuntu). The interface is, quite frankly, excellent. It gives you a web-based interface to the app, and you can even add your own descriptions to the shows, and ratings to boot. It’s well done. However, it does require some extra overhead due to the requirement of .Net (or Mono). It was also “broken” with the TiVo 8.3 software release, and so subfolders don’t work any longer. The Windows version currently doesn’t seem to sort filenames either (the Mono version apparently works). Finally, the developer is a bit on-and-off, so there’s no telling if development will continue.

Lastly I stumbled across pyTivo, a set of Python scripts developed jointly by a number of folks (there are a couple of lead developers). This means that just about any platform that supports Python should be able to handle pyTivo. I’ve only tried it on Windows and Ubuntu. Like Tivo.Net, pyTivo makes use of ffmpeg to transcode files on the fly, so anything supported by ffmpeg will be supported by pyTivo. Unlike Tivo.Net, there is no interface to the files. However, because pyTivo is being actively developed, the app has overcome the subfolder limitation, introduced by TiVo with the 8.3 update. The application also supports multiple folders from one installation (a nice feature), you can add music folders, and the speed seems to be a bit better. I had problems getting it to run correctly under Ubuntu, but that could be a problem on my end.

Ultimately, I’ve decided to go with pyTivo. The reason being is that it can also stream the raw TiVo files – something that isn’t a possibility with Tivo.Net. This means that I only need the TiVo Desktop software if I want to retrieve something from the TiVo (which I rarely do). And now I can watch just about anything I want to watch on my TiVo. It would be nice if there was a full-blown interface like Tivo.Net, and the ability to change metadata, but that may come one day. If not, at least it’s working for me in the meantime!


Posted

in

Comments

2 responses to “How to Create a Real Media Server with Tivo and pyTivo”

  1. Chad Everett Avatar

    Hi Kevin –

    Thanks for dropping by!

    I do keep tabs on things, and I still do use pyTivo – though I actually tend to use XBMC more than pyTivo these days, as I like the browsing interface a bit better (this is due more to limitations of the TiVo than pyTivo, however).

    Now, if the XBMC could play TiVo files somehow, that would be really cool…

  2. Kevin Avatar

    Come on back and check on us.

    Metadata descriptions for files have been added. Recently there has also been the addition of a Web Interface.

    We just keep plugging along. Thanks for the support