I recently purchased a ZYXEL 320 NAS (Network Attached Storage) instead of using a big power hungry file server. My overall opinion of it is really high, It is a great little device that hold two internal SATA drives and has an easy to use interface which is very perfect of any home user. However there was a few things that well… bugged me… for instance you are forced to have some default shares that you cannot change and you have to use the XFS file system which can be a pain if you just wanted to plug in some existing NTFS drives. Finally though you can install Transmission (the torrent client), it does not support RSS feeds for automatic downloading (Not a fault of the NAS).
Fortunately there’s a nice little hack to install other packages on to the NAS called FFP (fonz fun plug), I installed this by following these instructions. I then installed a new version of samba and manually setup of my shares. Unfortunately I could not solve XFS problem and ended up coping the data of my drive. I did however manage to resolve my Transmission problem by writing a python script that run through Cron every few hours and checks for new items then connects to Transmission and start off the download to which I’ll share at the bottom in case it’s useful to anyone, you’ll need to install feedparser and transmissionrpc for python.
In conclusion, I think the ZYXEL 320 is an awesome little device made even better by the open source community behind FFP.
Python script to download from RSS Feed and send to Transmission
def log(level, message):
syslog.syslog(level, message.encode('ascii', 'ignore'))
tc = transmissionrpc.Client('localhost', port=9091,user='admin',password='password')
user_id = 999999
command = "transmission-remote -a"
log(syslog.LOG_INFO, "Checking for new shows")
cachefile = os.path.expanduser("/ffp/showrss/showrss_cache")
cache = ConfigParser.ConfigParser()
url = "http://rss/?d=%s" % user_id
feed = feedparser.parse(url)
creatd = 1
created = 0
shows = 
for item in feed['items']:
title = item['title']
identifier = item['id']
key = md5.new(identifier).hexdigest()
torrent = item['links']['href']
log(syslog.LOG_INFO, "Downloading '%s'..." % title)
cache.set("entries", key, "1")
with open(cachefile, 'w+') as outputfile:
except Exception as e:
log(syslog.LOG_INFO, "Unable to download '%s'" % torrent)