mirror of https://github.com/stijndcl/didier
				
				
				
			Add support for linebreaks, parse id's beforehand to check properly, add leading zeroes to timestamp
							parent
							
								
									1372f0a996
								
							
						
					
					
						commit
						db0e7b8f9b
					
				|  | @ -1,15 +1,16 @@ | |||
| from datetime import datetime, timedelta | ||||
| from discord import Embed, Colour | ||||
| from functions.stringFormatters import leadingZero as lz | ||||
| from functions.timeFormatters import intToWeekday | ||||
| import pytz | ||||
| import re | ||||
| 
 | ||||
| 
 | ||||
| class UforaNotification: | ||||
|     def __init__(self, content: dict, course): | ||||
|     def __init__(self, content: dict, course, notif_id, course_id): | ||||
|         self._content: dict = content | ||||
|         self._course = course | ||||
|         self._notif_id, self._course_id = self._find_ids(self._content["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() | ||||
|  | @ -35,16 +36,6 @@ class UforaNotification: | |||
| 
 | ||||
|         return "https://ufora.ugent.be/d2l/le/news/{0}/{1}/view?ou={0}".format(self._course_id, self._notif_id) | ||||
| 
 | ||||
|     def _find_ids(self, url: str): | ||||
|         match = re.search(r"[0-9]+-[0-9]+$", url) | ||||
| 
 | ||||
|         if not match: | ||||
|             return None, None | ||||
| 
 | ||||
|         spl = match[0].split("-") | ||||
| 
 | ||||
|         return spl[0], spl[1] | ||||
| 
 | ||||
|     def _get_description(self): | ||||
|         desc = self._clean_content(self._content["summary"]) | ||||
| 
 | ||||
|  | @ -76,7 +67,10 @@ class UforaNotification: | |||
|             "<ins>": "__", | ||||
|             "</ins>": "__", | ||||
|             # Represent paragraphs with newlines | ||||
|             "</p>": "\n" | ||||
|             "</p>": "\n", | ||||
|             "<br>": "\n", | ||||
|             "<br/>": "\n", | ||||
|             "<br />": "\n" | ||||
|         } | ||||
| 
 | ||||
|         # Unescape HTML | ||||
|  | @ -96,6 +90,6 @@ class UforaNotification: | |||
| 
 | ||||
|         return "{} {}/{}/{} om {}:{}:{}".format( | ||||
|             intToWeekday(dt.weekday()), | ||||
|             dt.day, dt.month, dt.year, | ||||
|             dt.hour, dt.minute, dt.second | ||||
|             lz(dt.day), lz(dt.month), lz(dt.year), | ||||
|             lz(dt.hour), lz(dt.minute), lz(dt.second) | ||||
|         ) | ||||
|  |  | |||
|  | @ -1,3 +1,5 @@ | |||
| import re | ||||
| 
 | ||||
| import feedparser | ||||
| from data.embeds import UforaNotification | ||||
| import json | ||||
|  | @ -37,14 +39,14 @@ def run(): | |||
|         feed = feedparser.parse(url) | ||||
| 
 | ||||
|         # Filter out old notifications | ||||
|         feed = list(filter(lambda f: f["id"] not in notifications[course], feed.entries)) | ||||
|         feed = list(filter(lambda f: _parse_ids(f["id"])[0] not in notifications[course], feed.entries)) | ||||
| 
 | ||||
|         if feed: | ||||
|             for item in feed: | ||||
|                 notification = UforaNotification(item, course) | ||||
|                 new_notifications.append(notification) | ||||
|                 notif_id, course_id = _parse_ids(item["id"]) | ||||
|                 new_notifications.append(UforaNotification(item, course, notif_id, course_id)) | ||||
| 
 | ||||
|                 notifications[course].append(notification.get_id()) | ||||
|                 notifications[course].append(notif_id) | ||||
| 
 | ||||
|     # Update list of notifications | ||||
|     if new_notifications: | ||||
|  | @ -52,3 +54,14 @@ def run(): | |||
|             json.dump(notifications, fp) | ||||
| 
 | ||||
|     return new_notifications | ||||
| 
 | ||||
| 
 | ||||
| def _parse_ids(url: str): | ||||
|     match = re.search(r"[0-9]+-[0-9]+$", url) | ||||
| 
 | ||||
|     if not match: | ||||
|         return None, None | ||||
| 
 | ||||
|     spl = match[0].split("-") | ||||
| 
 | ||||
|     return spl[0], spl[1] | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue