Titta på det nya RSS-flödet! Det var väldigt enkelt. Formatet beskrivs på www.rssboard.org/rss-specification. Jag började läsa, men kom av mig och drog ner rfeed istället. Det fanns för Python-3 i Python Package Index. Exemplet det har verkar inte helt validera, men det säkert inte nåt problem för de flesta RSS-läsare (det funkade i min Chrome-plugin).
Här är i princip hela koden (det var lite små omskrivningar på några andra ställen också):
# From SO https://stackoverflow.com/questions/4389572/how-to-fetch-a-non-ascii-url-with-python-urlopen:
def urlEncodeNonAscii(b):
return re.sub('[\x80-\xFF]', lambda c: '%%%02x' % ord(c.group(0)), b)
def iriToUri(iri):
parts= urllib.parse.urlparse(iri)
return urllib.parse.urlunparse(
part if parti==1 else urlEncodeNonAscii(part)
for parti, part in enumerate(parts)
)
def build_feed(posts):
def build_rfeed_item(post):
link = iriToUri(BASE_URL + "/posts/" + get_post_url(post.title))
return rfeed.Item(
title = post.title,
link = link,
description = post.description,
author = "alex@email_som_inte_funkar.com",
guid = rfeed.Guid(link),
pubDate = datetime.datetime(post.date.year, post.date.month, post.date.day,
00, 00))
return rfeed.Feed(
title = "Alkanero",
link = BASE_URL,
description = "Ställe på internet där Alex halv-anonymt skriver av sig",
language = "sv",
lastBuildDate = datetime.datetime.now(),
items = [build_rfeed_item(post) for post in posts]
)
def generate_rss_xml(posts):
with open("feed.xml", "w") as f:
f.write(build_feed(posts).rss())
Det ska finnas en RSS-ikon i övre högra hörnet nu.