From: Nelson Elhage Date: Mon, 28 Dec 2009 23:09:11 +0000 (-0500) Subject: Initial reporting script X-Git-Url: https://projects.mako.cc/source/iron-blogger/commitdiff_plain/1a91b66e5b75c8dd14e6c16ea10a70baf6bf1ac3 Initial reporting script --- diff --git a/report.py b/report.py new file mode 100644 index 0000000..3959889 --- /dev/null +++ b/report.py @@ -0,0 +1,53 @@ +import yaml +import feedparser +import datetime +from dateutil.parser import parse +import dateutil.tz as tz + +with open('bloggers.yml') as f: + users = yaml.safe_load(f.read()) + +log = {} + +START = datetime.datetime(2009, 12, 21, 6) + +def parse_published(pub): + return parse(pub).astimezone(tz.tzlocal()).replace(tzinfo=None) + +def get_date(post): + if 'published' in post: + return post.published + return post.updated + +def get_link(post): + if 'href' in post: + return post.href + return post.links[0]['href'] + +def parse_feeds(weeks, uri): + feed = feedparser.parse(uri) + for post in feed.entries: + date = parse_published(get_date(post)) + + if date < START: + continue + wn = (date - START).days / 7 + + while len(weeks) <= wn: + weeks.append([]) + weeks[wn].append(dict( + date=date, + title=post.title, + url=get_link(post))) + +for (username, u) in users.items(): + weeks = [] + print "[%s]" % (username) + for l in u['links']: + parse_feeds(weeks, l[2]) + log[username] = weeks + for (i, w) in enumerate(weeks): + print " [%d]: %s" % (i, w) + +with open('report.yml', 'w') as f: + yaml.safe_dump(log, f)