Initial reporting script
This commit is contained in:
parent
d97eb53302
commit
1a91b66e5b
53
report.py
Normal file
53
report.py
Normal file
|
@ -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)
|
Loading…
Reference in a new issue