apod: Set avatar at the end, it reads better in Element

This commit is contained in:
gammafn 2022-01-12 22:08:44 -06:00
parent ccd1650d1a
commit abe43693ca
1 changed files with 27 additions and 22 deletions

View File

@ -1,5 +1,6 @@
import os import os
import re import re
import html
import requests import requests
from nio import AsyncClient, UploadError from nio import AsyncClient, UploadError
@ -81,31 +82,35 @@ class MatrixModule(BotModule):
async def send_apod(self, bot, room, uri, set_room_avatar=False): async def send_apod(self, bot, room, uri, set_room_avatar=False):
self.logger.debug(f"send request using uri {uri}") self.logger.debug(f"send request using uri {uri}")
response = requests.get(uri) response = requests.get(uri)
if response.status_code == 200:
apod = Apod.create_from_json(response.json())
self.logger.debug(apod) if response.status_code == 400:
if apod.media_type == "image":
await bot.send_text(room, f"{apod.title} ({apod.date})")
mxc_details = bot.get_uri_cache(apod.hdurl)
try:
if not mxc_details:
mxc_details = await bot.upload_image(apod.hdurl)
matrix_uri, mimetype, w, h, size = mxc_details
await bot.send_image(room, matrix_uri, apod.hdurl, mimetype, w, h, size)
if set_room_avatar:
await bot.set_room_avatar(room, matrix_uri, mimetype, w, h, size)
except (UploadFailed, ValueError):
await self.send_text(room, f"Something went wrong uploading {apod.hdurl}.")
await bot.send_text(room, f"{apod.explanation}")
else:
await self.send_unknown_mediatype(room, bot, apod)
elif response.status_code == 400:
self.logger.error("unable to request apod api. status: %d text: %s", response.status_code, response.text) self.logger.error("unable to request apod api. status: %d text: %s", response.status_code, response.text)
await bot.send_text(room, response.json().get("msg")) return await bot.send_text(room, response.json().get("msg"))
else:
if response.status_code != 200:
self.logger.error("unable to request apod api. response: [status: %d text: %s]", response.status_code, response.text) self.logger.error("unable to request apod api. response: [status: %d text: %s]", response.status_code, response.text)
await bot.send_text(room, "sorry. something went wrong accessing the api :(") return await bot.send_text(room, "sorry. something went wrong accessing the api :(")
apod = Apod.create_from_json(response.json())
self.logger.debug(apod)
if apod.media_type != "image":
return await self.send_unknown_mediatype(room, bot, apod)
await bot.send_html(room, f"<b>{html.escape(apod.title)} ({html.escape(apod.date)})</b>", f"{apod.title} ({apod.date})")
try:
matrix_uri = None
matrix_uri, mimetype, w, h, size = bot.get_uri_cache(apod.hdurl)
except (TypeError, ValueError):
self.logger.debug(f"Not found in cache: {apod.hdurl}")
try:
matrix_uri, mimetype, w, h, size = await bot.upload_image(apod.hdurl)
except (UploadFailed, TypeError, ValueError):
await self.send_text(room, f"Something went wrong uploading {apod.hdurl}.")
await bot.send_image(room, matrix_uri, apod.hdurl, mimetype, w, h, size)
await bot.send_text(room, f"{apod.explanation}")
if matrix_uri and set_room_avatar:
await bot.set_room_avatar(room, matrix_uri, mimetype, w, h, size)
async def send_unknown_mediatype(self, room, bot, apod): async def send_unknown_mediatype(self, room, bot, apod):
self.logger.debug(f"unknown media_type: {apod.media_type}. sending raw information") self.logger.debug(f"unknown media_type: {apod.media_type}. sending raw information")