writing HTML in templates, not in db + padding baseurl to templates to make images in the RSS work (hopefully)

This commit is contained in:
manetta 2022-02-18 16:46:05 +01:00
parent 9b49dbea79
commit 47aa5473a5

View File

@ -12,6 +12,8 @@ from xbotlib import Bot
class Logbot(Bot): class Logbot(Bot):
baseurl = "https://vvvvvvaria.org/logs/" # hardcoding the url now, self.baseurl would be helpful to have in the conf
help = """Oh dear, logbot is here! help = """Oh dear, logbot is here!
(You can speak to the bot using @logbot or logbot:) (You can speak to the bot using @logbot or logbot:)
@ -61,23 +63,13 @@ class Logbot(Bot):
with open(file_path, "wb") as media_file: with open(file_path, "wb") as media_file:
media_file.write(data) media_file.write(data)
# define media_post # define relative path to media file as "media_path"
media_path = os.path.join(media_type, filename) media_path = os.path.join(media_type, filename)
if media_type == "image":
media_post = f'<img src="{ media_path }" loading="lazy">'
elif media_type == "application":
media_post = f'<iframe src="{ media_path }" loading="lazy"></iframe>'
elif media_type == "audio":
media_post = f'<audio controls src="{ media_path }"></audio>'
elif media_type == "video":
media_post = f'<video controls src="{ media_path }"></video>'
else:
media_post = None
# get the size of the file # get the size of the file
media_size = os.path.getsize(os.path.join(self.output, folder_name, media_path)) media_size = os.path.getsize(os.path.join(self.output, folder_name, media_path))
return media_post, media_type, media_mime, media_path, media_size return media_type, media_mime, media_path, media_size
def _href_wrap(self, post): def _href_wrap(self, post):
"""Wrap links in <a> tags.""" """Wrap links in <a> tags."""
@ -112,16 +104,17 @@ class Logbot(Bot):
template = jinja2.Template(open("template.rss").read()) # self.feedtemplate would be useful to have in the conf template = jinja2.Template(open("template.rss").read()) # self.feedtemplate would be useful to have in the conf
with open(feed_path, "w") as out: with open(feed_path, "w") as out:
feed = template.render( feed = template.render(
log_path=os.path.join("https://vvvvvvaria.org/logs/", folder_name, "index.html"), # hardcoding the url now, self.baseurl would be helpful to have in the conf log_path=os.path.join(self.baseurl, folder_name, "index.html"),
feed_path=os.path.join("https://vvvvvvaria.org/logs/", folder_name, "feed.rss.xml"), # hardcoding the url again feed_path=os.path.join(self.baseurl, folder_name, "feed.rss.xml"),
title=self.db[message.room]["title"], title=self.db[message.room]["title"],
db=self.db[message.room], db=self.db[message.room],
date=date.strftime("%a, %d %b %Y %H:%M:%S +0100") # timezone is hardcoded now date=date.strftime("%a, %d %b %Y %H:%M:%S +0100"), # timezone is hardcoded now
baseurl=self.baseurl
) )
out.write(feed) out.write(feed)
self.log.info(f"writing to: { feed_path }") self.log.info(f"writing to: { feed_path }")
def _add_to_db(self, message, media_post=None, media_type=None, media_url=None, media_size=None): def _add_to_db(self, message, media_type=None, media_path=None, media_size=None):
"""Save new entry to database.""" """Save new entry to database."""
keys = [x for x in self.db[message.room]["messages"].keys()] keys = [x for x in self.db[message.room]["messages"].keys()]
keys.sort(key=int) keys.sort(key=int)
@ -130,13 +123,13 @@ class Logbot(Bot):
new_key = "0" new_key = "0"
else: else:
new_key = str(int(keys[-1]) + 1) new_key = str(int(keys[-1]) + 1)
if media_post: if media_path:
self.db[message.room]["messages"][new_key] = {} self.db[message.room]["messages"][new_key] = {}
self.db[message.room]["messages"][new_key]['post'] = media_post self.db[message.room]["messages"][new_key]['post'] = ''
self.db[message.room]["messages"][new_key]['date'] = date self.db[message.room]["messages"][new_key]['date'] = date
self.db[message.room]["messages"][new_key]['media'] = {} self.db[message.room]["messages"][new_key]['media'] = {}
self.db[message.room]["messages"][new_key]['media']['type'] = media_type self.db[message.room]["messages"][new_key]['media']['type'] = media_type
self.db[message.room]["messages"][new_key]['media']['url'] = os.path.join("https://vvvvvvaria.org/logs/", media_url) self.db[message.room]["messages"][new_key]['media']['path'] = media_path
self.db[message.room]["messages"][new_key]['media']['size'] = media_size self.db[message.room]["messages"][new_key]['media']['size'] = media_size
else: else:
post = message.content.replace("@add ", "") post = message.content.replace("@add ", "")
@ -207,10 +200,10 @@ class Logbot(Bot):
# Response to files: image / PDF / audio / video # Response to files: image / PDF / audio / video
if message.url: if message.url:
media_post, media_type, media_mime, media_path, media_size = self._download(message) media_type, media_mime, media_path, media_size = self._download(message)
# TODO: Insert a list of accepted file types here. # TODO: Insert a list of accepted file types here.
if media_post: if media_post:
num = self._add_to_db(message, media_post=media_post, media_type=media_mime, media_url=media_path, media_size=media_size) num = self._add_to_db(message, media_type=media_mime, media_path=media_path, media_size=media_size)
media_type = media_type.replace("images", "image") # linguistic hack! media_type = media_type.replace("images", "image") # linguistic hack!
if 'pdf' in message.url: if 'pdf' in message.url:
media_type = 'PDF' # linguistic hack! media_type = 'PDF' # linguistic hack!
@ -260,7 +253,7 @@ class Logbot(Bot):
try: try:
os.rename(current_folder_name_path, new_folder_name_path) os.rename(current_folder_name_path, new_folder_name_path)
self.db[message.room]["folder"] = new_folder_name self.db[message.room]["folder"] = new_folder_name
reply = f"The foldername of the log is changed to: { new_folder_name }. The URL of the log changed into: https://vvvvvvaria.org/logs/{ new_folder_name}" reply = f"The foldername of the log is changed to: { new_folder_name }. The URL of the log changed into: { self.baseurl }{ new_folder_name}"
except: except:
reply = f"Sorry i couldn't shange that foldername into: '{ new_folder_name }'. Try again with: 'logbot @folder newname'." reply = f"Sorry i couldn't shange that foldername into: '{ new_folder_name }'. Try again with: 'logbot @folder newname'."