Feeds: make RSS valid.

Patch provided via c/o tejmar of WPD.
Intended to fix the invalid RSS format which caused issues when
using the feeds with Discord and Telegram.
remotes/1693045480750635534/spooky-22
Snakes 2022-05-30 04:30:57 -04:00
parent 86190e6a29
commit 5d6d4f9ca0
1 changed files with 10 additions and 6 deletions

View File

@ -33,8 +33,12 @@ def feeds_user(sort='hot', t='all'):
with tag("title", type="text"): with tag("title", type="text"):
text(f"{sort} posts from {domain}") text(f"{sort} posts from {domain}")
doc.stag("link", href=SITE_FULL + request.full_path) with tag("id"):
doc.stag("link", href=SITE_FULL) text(SITE_FULL + request.full_path)
with tag("updated"):
text(datetime.now().isoformat()+"Z")
doc.stag("link", rel="self", type="application/atom+xml", href=SITE_FULL + request.full_path)
doc.stag("link", rel="alternate", type="text/html", href=SITE_FULL)
for post in posts: for post in posts:
with tag("entry", ("xml:base", SITE_FULL + request.full_path)): with tag("entry", ("xml:base", SITE_FULL + request.full_path)):
@ -42,14 +46,14 @@ def feeds_user(sort='hot', t='all'):
text(post.realtitle(None)) text(post.realtitle(None))
with tag("id"): with tag("id"):
text(post.fullname) text(post.permalink)
if (post.edited_utc): if (post.edited_utc):
with tag("updated"): with tag("updated"):
text(datetime.utcfromtimestamp(post.edited_utc).isoformat()) text(datetime.utcfromtimestamp(post.edited_utc).isoformat()+"Z")
with tag("published"): with tag("published"):
text(datetime.utcfromtimestamp(post.created_utc).isoformat()) text(datetime.utcfromtimestamp(post.created_utc).isoformat()+"Z")
with tag("author"): with tag("author"):
with tag("name"): with tag("name"):
@ -67,4 +71,4 @@ def feeds_user(sort='hot', t='all'):
with tag("content", type="html"): with tag("content", type="html"):
doc.cdata(f'''<img alt="{post.realtitle(None)}" loading="lazy" src={image_url}><br>{post.realbody(None)}''') doc.cdata(f'''<img alt="{post.realtitle(None)}" loading="lazy" src={image_url}><br>{post.realbody(None)}''')
return Response( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+ doc.getvalue(), mimetype="application/xml") return Response( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+ doc.getvalue(), mimetype="application/xml")