Subscribe to TV Shows Using BitTorrent on OSX

Home > Technology > How To >

Last year TorrentFreak covered the TV-Shows application which allowed the user to subscribe to TV shows using BitTorrent. Some people are reporting that the app isn't working for them so for those that don't mind working at a solution, here is a tutorial to achieve the same, using freely available tools.

Last year when we wrote about the great TVShows application, it was well received by the TorrentFreak readers. The software did some really good things and the developer is promising a major update soon and we’ll bring that news when we have it. For those who missed it first time round, take a look at the original article for a full explanation. In the meantime, some people are reporting that the application has recently stopped working for them, leaving some OSX users with fewer options for subscribing to tv-shows using BitTorrent.

Some people are using TED, which is a Java app running continuously which may cause resource issues for the under-powered computer. Others might choose to use directly the RSS support built into torrent clients, explained in this previous article, or go for software such as Miro.

But for those of you out there who like to get a little more hands-on and aren’t afraid of a basic command line, read on.

TorrentFreak reader Lipflip has come up with an alternative method for OSX and probably Linux users too. He told us that everything TVShows did can be achieved by using some freely available tools like cron and a script pyTVShows that is based on the original TVShows application.

pyTVShows does the actual work by checking for torrents and downloading them if new ones are available. Lipflip has published a simple tutorial on how to setup the different components so that everything is working as expected. Although you don’t have to be an uber-geek to follow the tutorial, Lipflip notes that some basic command line skills are required which should help users to get their shows until the new TVShows is released.

The original TVShows application consists of two parts:

1. A front-end for fetching a list of shows and for subscribing/unsubscribing.
2. A python script in the back-end, that regularly asks if new episodes for the subscribed shows are available.

Luckily TVShows is an open source application, so after the development of TVShows stood still for several months, the back-end forked away as the separate pyTVShows project. We’ll use this to build a system that fetches your favorite television shows automatically.

The installation consists of a few easy steps. Python already ships with Leopard, so you don’t have to hassle around with fink or other ways to bring Python onto your computer.

1. Preparation

Open Terminal.App and create a bin/ directory under your home. You can use this directory to store small scripts or little unix-like applications.

$ mkdir /Users/YOU/bin

Download pyTVShows, unzip it, and put it as pytvshows-0.2 in your bin/ directory.

Download feedparser, unzip it, and install it.

$ cd /Users/YOU/Downloads/feedparser-4/
$ python install

2. Create a preliminary configuration file

pytvshows settings are stored in /.pytvshows.cfg. Create it and add one or two shows for testing.

$ nano ~/.pytvshows.cfg

The format of the configuration file is pretty simple. The name of the show is enclosed by squared brackets, followed by the last season/episode you have seen.
So the next episode downloaded for Favorite Show from the example below will be Season 1, Episode 2. Try episode = 0 for catching the first episode of a new season.

[Favorite Show]
episode = 1
season = 1

[Another Show]
episode =1
season = 4

See pytvshows’ documentation for further details.

3. Create a little wrapper script

Create a little wrapper script that calls the actual pytvshows, but hides any command line arguments you might want to use. Don’t forget to make it executable.

$ nano ~/bin/
$ chmod a+x ~/bin/

A typical might look like this:

echo -n “ – “; date # log current date & time (cron.log)
/Users/YOU/bin/pytvshows-0.2/pytvshows –output_dir=/Users/YOU/Downloads/

This will call pytvshows and tell it to download new .torrents into Leopard’s Downloads folder. This folder is usually represented as a stack in your dock. You might consider configuring your favorite BitTorrent client to watch this folder for new .torrent files.

Check it for typos by executing the script:

$ ./bin/

It should download unseen episodes of the shows configured in ./pytvshows.cfg.
If it doesn’t try running pytvshows with the parameter --verbose. The configuration file will be rewritten each time a .torrent was downloaded. So maybe it doesn’t download new episodes because it thinks it already did.

4. Run periodically

Unix-like systems usually come with a time-based scheduling service called cron. It is driven by rather cryptic looking configuration files called crontabs. In this case we’ll tell cron to run our newly created twice an hour.

Edit your crontab:

$ crontab -e

If you’re thrown into vi you may try export EDITOR=nano beforehand.

Your crontab should look like this:

# run twice an hour
12,42 * * * * /Users/YOU/bin/ >> $HOME/bin/cron.log 2>&1

This tells cron to call on 12 resp. 42 minutes past the hour. All output (STDERR and STDOUT) should be send to /Users/YOU/bin/cron.log.
Take a look at man crontab for further information.

It’s strongly suggested to randomize the numbers above. Otherwise too many pytvshows might be querying simultaneously.

5. You’re probably done

Check your configuration by looking at ~/bin/cron.log.

Have fun!

Lipflip’s blog can be found here


Popular Posts
From 2 Years ago…