from MoodleClasses.MoodleActivity import MoodleActivity from MoodleClasses.MoodleFile import MoodleFile from bs4 import BeautifulSoup from urllib.parse import unquote import requests class MoodleAssign(MoodleActivity): def __init__(self, soup: BeautifulSoup): super().__init__(soup) self.url = self._get_url() self.parent_dir = None self.files = [] def _get_url(self) -> str: url = self.soup.find("a")["href"] if url in self.all_urls: self.all_urls.remove(url) return url def find(self, s: requests.Session) -> bool: r = s.get(self.url) soup = BeautifulSoup(r.text, 'html.parser') for candidate in soup.find_all("div", {"class": "fileuploadsubmission"}): link = candidate.find("a") url = link["href"].split('?')[0] filename = unquote(link.text) self.files.append(MoodleFile(self, url)) self.files[-1]._get_filepath(filename) return True def download(self, s: requests.Session, ignore_extension: list[str]) -> bool: result = True for file in self.files: result = result and file.download(s, ignore_extension) return result