from urllib.parse import unquote import bs4 import os class MoodleActivity: def __init__(self, soup: bs4.element.Tag): self.soup = soup self.all_urls = self._get_all_urls() self.name = self._get_name() self.parent_dir = None def __repr__(self): return f"{self.parent_dir}/{self.name}" def _get_all_urls(self) -> list[str]: return list(map(lambda x: x["href"], self.soup.find_all("a"))) def _get_name(self) -> str: link = self.soup.find("a") if link is None: return self.soup.text.strip().split("\n")[0].strip() text = link.text toremove = link.find("span", {"class": "accesshide"}) if toremove is None: name = text.strip() else: name = text[:text.find(toremove.text)].strip() return unquote(name)[:min(len(name), 50)] def set_parent_dir(self, parent_dir: os.path) -> None: self.parent_dir = parent_dir