from flask import Blueprint
rss_bp = Blueprint("rss", __name__)
@rss_bp.route("/feed/<name>/rss.xml")
def feed(name):
if name not in data.POSTS:
abort(404)
entries = []
for post in data.get_posts(name, data.STATE_PUBLISHED, end=50):
post["timestamp"] = post[data.TIMESTAMP]
post["link"] = url_for(
"post", name=name, timestamp=post["timestamp"], _external=True
)
entries.append({"content": post})
title = f"{data.POSTS[name]} AFPy.org"
return render_template(
"rss.xml",
entries=entries,
title=title,
description=title,
link=url_for("feed", name=name, _external=True),
)
@rss_bp.route("/planet/")
@rss_bp.route("/planet/rss.xml")
def planet():
entries = []
for name, url in PLANET.items():
for entry in feedparser.parse(url).entries:
if hasattr(entry, "updated_parsed"):
date = entry.updated_parsed
elif hasattr(entry, "published_parsed"):
date = entry.published_parsed
else:
date = time.time()
entry["timestamp"] = time.mktime(date) if date else time.time()
entries.append({"feed": name, "content": entry})
entries.sort(reverse=True, key=lambda entry: entry["content"]["timestamp"])
return render_template(
"rss.xml",
entries=entries,
title="Planet Python francophone",
description="Nouvelles autour de Python en français",
link=url_for("planet", _external=True),
)