--- cron-feed.orig.py 2012-05-06 00:49:53.000000000 +0200 +++ cron-feed.py 2012-05-06 01:17:47.417556933 +0200 @@ -55,8 +55,13 @@ reason). This means this reader might be some hours off with the timestamp.""" return formatdate(mktime_tz(t[:] + (0,))) -with open(furls, "r") as u: - feeds = filter(lambda(x): not x.strip().startswith("#"), u.read().splitlines()) +def iter_feeds(furls): + with open(furls, "r") as u: + for xline in u.xreadlines(): + line = xline.strip() + if line.startswith("#"): + continue + yield line.partition(" ") seen = {} try: @@ -91,12 +96,19 @@ if link: mail["To"] = ('<%s>' % link).encode("utf-8") # XXX: come up with a better header? return mail -for url in feeds: +for url, has_sub, folder in iter_feeds(furls): try: feed = feedparser.parse(url) except: print >> sys.stderr, "Error retrieving %s" % url continue + if has_sub: + try: + fbox = mbox.get_folder(folder) + except: + fbox = mbox.add_folder(folder) + else: + fbox = mbox fs = seen.get(url, set()) for ent in feed.entries: @@ -115,7 +127,7 @@ except: date = None mail = create_feed_mail(author, title, summ, date, ent["id"], link) - mbox.add(mail) + fbox.add(mail) fs.add(ent["id"]) seen[url] = fs