Compare commits

..

No commits in common. "cdb8a04cde28246e8a17b6b8aabfc9e3ce4c65c6" and "9561b98f988402b1996f5aaec12a08d4ac98a5d6" have entirely different histories.

2 changed files with 45 additions and 16 deletions

View File

@ -1,17 +1,17 @@
from datetime import datetime
from datetime import datetime, timedelta
from discord import Embed, Colour
from functions.stringFormatters import leadingZero as lz
from functions.timeFormatters import intToWeekday
from markdownify import markdownify as md
from html import unescape
import pytz
import re
class UforaNotification:
def __init__(self, content: dict, course, notif_id, course_id):
self._content: dict = content
self._course = course
self._notif_id = notif_id
self._course_id = course_id
self._notif_id, self._course_id = notif_id, course_id
self._view_url = self._create_url()
self._title = self._clean_content(self._content["title"])
self._description = self._get_description()
@ -40,24 +40,54 @@ class UforaNotification:
def _get_description(self):
desc = self._clean_content(self._content["summary"])
if len(desc) > 4096:
return desc[:4093] + "..."
if len(desc) > 500:
return desc[:497] + "..."
return desc
def _clean_content(self, text: str):
return md(text)
# Dict with HTML & markdown tags to replace
html_table = {
# CHARACTERS:
"&": '&',
""": '"',
"apos;": "'",
">": ">",
"&lt;": "<",
# MARKDOWN SUPPORT:
"<b>": "**",
"</b>": "**",
"<strong>": "**",
"</strong>": "**",
"<i>": "*",
"</i>": "*",
"<em>": "*",
"</em>": "*",
"<del>": "~~",
"</del>": "~~",
"<ins>": "__",
"</ins>": "__",
# Represent paragraphs with newlines
"</p>": "\n",
"<br>": "\n",
"<br/>": "\n",
"<br />": "\n"
}
# Unescape HTML
for key, value in html_table.items():
text = text.replace(key, value)
# Remove HTML tags
return unescape(re.sub(r"<[^>]*>", "", text))
def _get_published(self):
# Datetime is unable to parse the timezone because it's useless
# We will hereby cut it out and pray the timezone will always be UTC+0
published = self._content["published"].rsplit(" ", 1)[0]
time_string = "%a, %d %b %Y %H:%M:%S"
dt = datetime.strptime(published, time_string)\
time_string = "%a, %d %b %Y %H:%M:%S %Z"
dt = datetime.strptime(self._content["published"], time_string)\
.astimezone(pytz.timezone("Europe/Brussels"))
# Apply timezone offset in a hacky way
dt = dt + dt.utcoffset()
# Apply timezone offset
dt = dt + timedelta(hours=dt.utcoffset().seconds//3600)
return "{} {}/{}/{} om {}:{}:{}".format(
intToWeekday(dt.weekday()),

View File

@ -17,5 +17,4 @@ quart==0.15.1
Quart-CORS==0.5.0
attrs~=21.2.0
dacite~=1.6.0
pytest==6.2.4
markdownify==0.9.2
pytest==6.2.4