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 tvrss.net 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 tvrss.net 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 setup.py 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/tvshows.sh
$ chmod a+x ~/bin/tvshows.sh
A typical tvshows.sh
might look like this:
#!/bin/bash
echo -n “tvshows.sh – “; 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/tvshows.sh
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 tvshows.sh 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 tvshows.sh
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/tvshows.sh >> $HOME/bin/cron.log 2>&1
This tells cron to call tvshows.sh 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 tvrss.net simultaneously.
5. You’re probably done
Check your configuration by looking at ~/bin/cron.log
.
Have fun!
Lipflip’s blog can be found here