This is all hypothetical. Do this at your own risk.

  • 12-10-2011 — updated blocklist script
  • 12-07-2011 — added encryption and blocklists

I’m writing based on an ArchLinux setup, but this all translates to any other Linux distro and OSX pretty easily.

The Setup

  • ArchLinux for the seedbox (or whatever distro you want).
  • ShowRSS to create a feed of torrents for TV shows.
  • FlexGet to read the RSS feed and download the attached torrent file.
  • CouchPotatoApp to grab torrents for movies.
  • TransmissionBT to do the actual torrenting.

The Configs

ShowRSS

Just register, pick your shows, and get the main feed. Note that when we get to the FlexGet configuration, the feed URL includes the namespace parameter. Not sure if it’s necessary but it works.

TransmissionBT

Installation and Management

TransdroidI run transmission as a daemon (transmission-cli-svn) and access it via Transdroid on my Droid, transmission-remote-cli (transmission-remote-cli-git in the AUR) in consoles, or the web interface in browsers. Configuring the daemon after installing it from the AUR is pretty straightforward — just make sure the daemon isn’t running (sudo /etc/rc.d/transmissiond stop) and edit the ~/.config/transmission-daemon/settings.json file. Be sure to turn on RPC authentication and set a username and password.

Encryption and Blocklists

TransmissionBT has native support for encryption and blocklists. In the settings.json file, I set “encryption”: 2 to require encryption. I also enable blocklists: “blocklist-enabled”: true. To get blocklists working, you need to download the list as a text file and store it in the ~/.config/transmission-daemon/blocklists directory. The following script does that for you, using the Bluetack level1 blocklist.

#!/bin/bash

function downloadUnzipMove {
  echo "* Processing blocklist '$1'..."
  if wget -O "/home/davidosomething/tmp/$1.gz" "http://list.iblocklist.com/?list=bt_$1&fileformat=p2p&archiveformat=gz" >/dev/null 2>&1; then
    gunzip "/home/davidosomething/tmp/$1.gz"
    mv "/home/davidosomething/tmp/$1" "/home/davidosomething/.config/transmission-daemon/blocklists/$1.txt"
  fi
  echo "  DONE"
}

downloadUnzipMove level1
downloadUnzipMove dshield
downloadUnzipMove spyware
downloadUnzipMove hijacked

# restart transmission-daemon (only way to reload blocklists)
echo Restarting transmission-daemon to reload blocklists
/etc/rc.d/transmissiond restart

I use cron (as root, since the transmissiond service has to be restarted to reload blocklists) to run this automatically every week.

You can add more blocklists, just modify the function call and maybe the name of the blocklist file from iblocklist if you’re using non-bluetack lists. To find out more about which blocklists to use, check out the iBlocklist site.

FlexGet

Installation

I had to install FlexGet manually — the copy in the AUR was broken. Here are the steps to do this with packer as my AUR helper:

# Get python2.7
sudo pacman -S python2

# If you have python2-distribute and it conflicts, remove it (and dependents)
# flask and jinja are in setuptools, btw
sudo pacman -Ru python2-flask python2-jinja python2-distribute

# get python-setuptools from the aur, which has the easy_install script
sudo packer -S python2-setuptools

# run easy_setup (with version suffix "2.7" if needed) to get flexget
sudo easy_install-2.7 flexget

# test install, any errors?
flexget -v

# for communicating with transmissionBT:
sudo packer -S pytransmissionrpc

Config

Your FlexGet config should be something like the following. You can optionally use the all_series FlexGet plugin so you don’t have to manually define the series’ names. Thanks to @danielparker for providing this barebones config:

feeds:
  showrss:
    download: true
    rss: http://showrss.karmorra.info/rss.php?user_id=YOURUSERID&hd=null&proper=null&namespaces=true
    series:
      - Thundercats
      - Some Other Show
    set:
      path: /path/to/video/locations/{{series_name}}/Season {{series_season}}
presets:
  global:
    transmission:
      addpaused: false
      host: localhost
      username: yourTransmisionWebUIUsername
      password: yourTransmisionWebUIPass
      port: 9091
      ratio: 1.0
      removewhendone: true

Scheduling via cron

The flexget site explains scheduling via cron well.

Updating FlexGet

If you installed via python easy_install as I did, you can update FlexGet in the future by using this command:

sudo easy_install2.7 --upgrade flexget

CouchPotatoApp

Mobile PotatoGrab couchpotato-git from the AUR and hit http://localhost:5000/ to start configuring it. It runs as a daemon, so start it and put it in your DAEMONS list in /etc/rc.conf. CouchPotatoApp has automatic push into transmission via the RPC client that you should have set up.

Check out Mobile Potato to add movies via Android. It works alongside the IMDB android app. If you’re looking through IMDB and see a movie you want, you can send it to CouchPotatoApp.

Remote management

Make sure all your services (ssh, transmission, couchpotato) are passworded. Make sure your router ports are forwarded for those apps as well. A dynamic DNS pointing to your router/seedbox would be useful if you need to access this stuff from outside your network and don’t know your IP all the time.