#!/usr/bin/env python
# Copyright (c) 2008, Jeremy Grosser
# Open source under New BSD License. See LICENSE file for details
# Where the patterns and downloaded files are stored
RSSNZB_DIR = '/etc/rssnzb'
# Where to put downloaded NZB files
DOWNLOAD_DIR = '/mnt/media/upload'
from urllib import urlretrieve
from xmlrpclib import ServerProxy
from time import sleep
import feedparser
import simplejson as json
import re
from pprint import pprint
dl = open('%s/downloaded' % RSSNZB_DIR, 'r')
downloaded = []
for line in dl.readlines():
downloaded.append(line[:-1])
dl.close()
def download_nzbs(urls, hella):
entries = []
for url in urls:
feed = feedparser.parse(url)
entries += feed['entries']
downloaded = json.load(file('%s/downloaded' % RSSNZB_DIR, 'r'))
queue = {}
for entry in entries:
if entry['report_progress'] != 'Report is complete':
continue
if entry['title'] in downloaded:
existing = downloaded[entry['title']]
if int(entry['report_size']) <= int(existing['report_size']):
continue
queue[entry['title']] = entry['report_id']
downloaded[entry['title']] = entry
for title in queue:
print 'Downloading', title
hella.enqueuenewzbin(queue[title])
sleep(1)
serial = {}
for key in downloaded:
serial[key] = {}
for k in downloaded[key]:
if k in ['report_id', 'report_size', 'title']:
serial[key][k] = downloaded[key][k]
json.dump(serial, file('%s/downloaded' % RSSNZB_DIR, 'w'), indent=4)
def main():
hella = ServerProxy('http://hellanzb:massive@localhost:8760/')
download_nzbs([x.rstrip('\r\n') for x in file('%s/savedsearches' % RSSNZB_DIR, 'r').readlines()], hella)
if __name__ == '__main__':
main()