]> oss.titaniummirror.com Git - webber.git/blobdiff - plugins/rss_feed.py
rss_feed.py: limit number of published items via "rss_max_items"
[webber.git] / plugins / rss_feed.py
index 1dbc11e25b874ffad8157b9cf3d561d7a2e22605..580d3040925ec0e07af77fd8af67eab82add60b4 100644 (file)
@@ -8,6 +8,7 @@ except ImportError:
        raise
 
 items = []
+max_age = 0
 
 
 @set_hook("checkconfig")
@@ -15,6 +16,12 @@ def checkconfig(params):
        if not cfg.has_key("rss_file"):
                log('no "rss_file:" configured, using "feed.rss":', 4)
                cfg.rss_file = "feed.rss"
+       if not cfg.has_key("rss_max_items"):
+               cfg.rss_max_items = 0
+       if cfg.has_key("rss_max_age_days"):
+               import time
+               global max_age
+               max_age = int(time.time()) - int(cfg.rss_max_age_days)*86400
 
 
 # Helper class needed for datetime.datetime to generate GMT timestamps
@@ -38,6 +45,8 @@ def sitemap_scan(params):
        global items
 
        file = params.file
+       if max_age and file["mtime"] < max_age:
+               return
        if not file.has_key("linktitle"):
                return
        if file.has_key("change"):
@@ -59,9 +68,15 @@ def sitemap_scan(params):
 
 @set_hook("finish")
 def finish(params):
+       global items
        # Sort items by pubDate, which still holds the mtime
        items.sort(key=lambda i: i.pubDate, reverse=True)
 
+       # Limit to requested number
+       count = int(cfg.rss_max_items)
+       if count:
+               items = items[:count]
+
        # convert mtime to real pupDate
        for i in items:
                i.pubDate = datetime.datetime.fromtimestamp(i.pubDate, utc)