37 lines
1.2 KiB
Python
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
|