Files
MoodleScraper/MoodleClasses/MoodleAssign.py

37 lines
1.2 KiB
Python

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