adding RSS support to logbot

This commit is contained in:
manetta 2021-03-07 11:36:03 +01:00
parent d6bee48b98
commit 30df62d1d5
2 changed files with 41 additions and 6 deletions

18
LogBot/feed.rss Normal file
View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>{{ title }}</title>
<link>{{ log_path }}</link>
<description>Collective log writing using XMPP chat groups and LogBot.</description>
<lastBuildDate>{{ date }}</lastBuildDate>
{% for post in db["messages"] %}
<item>
<title></title>
<link>{{ log_path }}#{{ x }}</link>
<description>{{ post }}</description>
<dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">LogBot</dc:creator>
<pubDate>{{ post.date }}</pubDate>
</item>
{% endfor %}
</channel>
</rss>

View File

@ -3,11 +3,10 @@ import re
import shutil
import urllib.request
from urllib.parse import urlparse
from datetime import datetime
import jinja2
from xbotlib import Bot
class Logbot(Bot):
help = """Oh dear, logbot is here!
@ -106,10 +105,25 @@ class Logbot(Bot):
with open(log_path, "w") as out:
html = template.render(
title=self.db[message.room]["title"],
db=self.db[message.room]["messages"],
db=self.db[message.room]["messages"]
)
out.write(html)
self.log.info(f"writing to: {log_path}")
self.log.info(f"writing to: { log_path }")
def _generate_feed(self, message):
template = jinja2.Template(open("feed.rss").read())
room_name = self._parse_room_name(message.room)
feed_path = os.path.join(self.output, room_name, "feed.rss")
date = datetime.now()
with open(feed_path, "w") as out:
feed = template.render(
log_path=os.path.join(self.output, room_name, "index.html"),
title=self.db[message.room]["title"],
db=self.db[message.room],
date=date.strftime("%A, %d. %B %Y %I:%M%p")
)
out.write(feed)
self.log.info(f"writing to: { feed_path }")
def _add_to_db(self, message, media_post=None):
"""Save new entry to database."""
@ -122,8 +136,8 @@ class Logbot(Bot):
if media_post:
self.db[message.room]["messages"][new_key] = media_post
else:
replaced = message.content.replace("@add", "")
self.db[message.room]["messages"][new_key] = replaced
post = message.content.replace("@add ", "")
self.db[message.room]["messages"][new_key] = post
self.db._dumps()
def _parse_room_name(self, room):
@ -218,6 +232,9 @@ class Logbot(Bot):
# Regenerate the log webpage
self._write_log(message)
# Regenerate the RSS feed
self._generate_feed(message)
# Reply to the groupchat
self.reply(reply, room=message.room)