forked from varia/bots
adding RSS support to logbot
This commit is contained in:
parent
d6bee48b98
commit
30df62d1d5
18
LogBot/feed.rss
Normal file
18
LogBot/feed.rss
Normal 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>
|
@ -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)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user