<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -12,7 +12,9 @@ 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 = []
@@ -20,28 +22,41 @@ for line in dl.readlines():
     downloaded.append(line[:-1])
 dl.close()
 
-def download_nzbs(url, hella):
-    feed = feedparser.parse(url)
-    for entry in feed['entries']:
-        if entry['report_progress'] == 'Report is complete' and not entry['report_id'] in downloaded:
-            print 'Downloading %s' % (entry.title)
-            hella.enqueuenewzbin(int(entry['report_id']))
-            file('%s/downloaded' % RSSNZB_DIR, 'a').write('%s\n' % entry['report_id'])
-            sleep(1)
-            #nzb = file('%s/%s.nzb' % (DOWNLOAD_DIR, entry.title), 'w')
-            #query = {
-            #    'reportid': str(entry['report_id']),
-            #}
-            #nzb.write(directnzb(query)[1])
-            #nzb.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']) &lt;= 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/')
 
-    for url in file('%s/savedsearches' % RSSNZB_DIR).readlines():
-        url = url.rstrip('\r\n')
-        download_nzbs(url, hella)
+    download_nzbs([x.rstrip('\r\n') for x in file('%s/savedsearches' % RSSNZB_DIR, 'r').readlines()], hella)
 
 if __name__ == '__main__':
     main()</diff>
      <filename>ssnzb.py</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>ebe38f58a6e4cabe7629a30dfe4e16c45198a25d</id>
    </parent>
  </parents>
  <author>
    <name>Jeremy Grosser</name>
    <email>synack@neohippie.net</email>
  </author>
  <url>http://github.com/synack/rssnzb/commit/9116abf6f9d39faf439ea617ac707110b86afa85</url>
  <id>9116abf6f9d39faf439ea617ac707110b86afa85</id>
  <committed-date>2009-09-25T21:17:36-07:00</committed-date>
  <authored-date>2009-09-25T21:17:36-07:00</authored-date>
  <message>Be clever when multiple copies of the same show appear in the feed.</message>
  <tree>375a812b417a91a0ca36de5bcd2eac0d3a291758</tree>
  <committer>
    <name>Jeremy Grosser</name>
    <email>synack@neohippie.net</email>
  </committer>
</commit>
