TapeWorm
A MythTV Parasite for Windows














TapeWorm 1.1 Upgrade
If you made a donation to Capital Candlelighters when you got TapeWorm 1.0, you do NOT need to donate again when you upgrade TapeWorm (although of course you are welcome to!)
However, if you find TapeWorm to be useful enough that it's worth upgrading and you have not yet made your donation, I would appreciate it if you would make a donation of at least $10 to Capital Candlelighters. To donate, you can visit the Capital Candlelighters donation page, or you can click the "Donate" button on TapeWorm's "About" box.
What's New?
There are several improvements in TapeWorm 1.1.
First, I've added a feature that's been referred to as "Myth-to-go" on the MythTV-users mailing list. You can select programs from your MythTV Server and tell TapeWorm to make a local copy, which you can then take with you and watch on the road, without needing to be connected to your MythTV Server.
Second, I've added the ability to delete programs, both from the MythTV Server and from the local copies. I often like to delete a show as soon as I've watched it, since I'm always critically low on disk space. Now I can do it from TapeWorm, instead of having to go to my MythTV box.
Third, I've made the system for launching the video player more flexible. There are now three different methods of launching the media player to choose from. Each method has advantages and disadvantages, so now you can select the one that works best for the way you like to watch your videos.
The TapeWorm Interface
The first thing to notice is that the TapeWorm interface now has two tabs,

The "Server" tab shows the data from the MythTV Server TapeWorm is connected to. It lists, plays, and deletes the programs that are on your MythTV Server. You can use the "Capture" button to copy a program from the Server to your local TapeWorm cache.

The "Local" tab shows your local TapeWorm cache, the files you've captured from your MythTV Server. This tab lists, plays, and deletes the local copies of your programs, and does not require that you be connected to the MythTV Server to work correctly.
You will notice that the Local tab does not have a "Capture" button because you only capture programs from the Server, not from the Local cache. You will also notice that the Local tab does not have a "Refresh Program List" button. That is because your local program list should only be changed from within TapeWorm, and cannot be changed by activity on the MythTV Server or by other users the same way the data on the Server tab can be.
Configuring TapeWorm 1.1
As you may have guessed, configuring TapeWorm 1.1 is slightly more involved than configuring TapeWorm 1.0. I will assume you have already gotten your MythTV Server set up to share video.
Start TapeWorm 1.1 and press the Configure button. The new Configuration screen looks like this:

There are two new fields on the Configuration dialog, the Local Video Directory and the Media Player Method.
The Local Video Directory is the local folder where you would like TapeWorm to store video files and data for programs you want to have available even when you are not able to connect to your MythTV Server.
The Media Player Method is used to select between several different options for launching the Media Player, as specified in the Media Player Command. Basically, I've discovered a number of different ways of launching a media player from Python, but none of these ways is perfect. There are tradeoffs. And rather than forcing everyone to accept the formula that works best for me, I thought I'd give you some options.
Method 1 uses Python's os.spawnv() command. It's the first method I tried for launching a media player. It works with Windows Media Player and the Zoom Player, but not with the VideoLAN Client. It handles spaces in the video file names and the video file paths appropriately. It is not Modal, meaning that you can switch between your media player and TapeWorm if you wish to, and both will continue functioning. I originally rejected Method 1 in writing TapeWorm 1.0 because it fails with VideoLAN.
Method 2 uses Python's os.popen2() command. It's the second method I tried for launching a media player, and is the method that was used in TapeWorm 1.0. It works with Windows Media Player, the VideoLAN Client, and the Zoom Player. Unfortunately, it cannot play videos if there are spaces in the video file names or the video paths, and it is Modal, meaning that TapeWorm is frozen while the media player is open. The issue with spaces, pointed out to me by Andy Foster, is the main reason this method isn't acceptable as the only way to launch media players. If you do use this method, be sure to change your Local Video Path so that it doesn't include any spaces, such as the one in the middle of "Program Files". I suggest using something like "C:\TapeWormVideo".
Method 3 uses wxPython's wx.Process() command. It works with the VideoLAN Client (only if the "-f" parameter is used, and even then, it's a bit wonky!) and the Zoom Player, but not with Windows Media Player. It can handle spaces in video file names and paths, and is not modal.
So which method is best? I don't really know. That's why I've chosen to make all three available. I've used Method 2 with Windows Media Player and VideoLAN quite a bit with TapeWorm 1.0, and have been pretty happy with the results. However, I think I'm going to try Method 1 with Zoom for a while and see if I like that better.