command: Fix opmlexport crash due to orphaned feed data
[rss2email.git] / rss2email / command.py
index d404155c8849ccca2ae922bba1fa78d447fb606c..c43e4ad113ebb2f1ba54ed83705f1eb4f77ddd6d 100644 (file)
@@ -53,16 +53,16 @@ def run(feeds, args):
     "Fetch feeds and send entry emails."
     if not args.index:
         args.index = range(len(feeds))
-    for index in args.index:
-        feed = feeds.index(index)
-        if feed.active:
-            try:
-                feed.run(send=args.send)
-            except _error.NoToEmailAddress as e:
-                e.log()
-            except _error.ProcessingError as e:
-                e.log()
-    feeds.save()
+    try:
+        for index in args.index:
+            feed = feeds.index(index)
+            if feed.active:
+                try:
+                    feed.run(send=args.send)
+                except _error.RSS2EmailError as e:
+                    e.log()
+    finally:
+        feeds.save()
 
 def list(feeds, args):
     "List all the feeds in the database"
@@ -154,6 +154,9 @@ def opmlexport(feeds, args):
         '</head>\n'
         '<body>\n')
     for feed in feeds:
+        if not feed.url:
+            _LOG.debug('dropping {}'.format(feed))
+            continue
         url = _saxutils.escape(feed.url)
         f.write('<outline type="rss" text="{0}" xmlUrl="{0}"/>'.format(url))
     f.write(