33 lines
976 B
Python
33 lines
976 B
Python
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
|