Changing moodle activity handling
This commit is contained in:
35
MoodleClasses/MoodleCourse.py
Normal file
35
MoodleClasses/MoodleCourse.py
Normal file
@@ -0,0 +1,35 @@
|
||||
from MoodleClasses.MoodleCourseSection import MoodleCourseSection
|
||||
from bs4 import BeautifulSoup
|
||||
from urllib.parse import unquote
|
||||
import requests
|
||||
import os
|
||||
|
||||
|
||||
class MoodleCourse:
|
||||
def __init__(self, name_with_code: str, url: str):
|
||||
self.url = url
|
||||
self.code = unquote(name_with_code.split()[0])
|
||||
self.name = unquote(" ".join(name_with_code.split()[1:]).strip())
|
||||
self.soup = None
|
||||
self.sections = None
|
||||
|
||||
def __repr__(self):
|
||||
return f"{self.code} {self.name}: {len(self.sections)} sections"
|
||||
|
||||
def init(self, s: requests.Session) -> None:
|
||||
self.soup = self._get_soup(s)
|
||||
self.sections = self._get_sections()
|
||||
|
||||
def _get_soup(self, s: requests.Session) -> BeautifulSoup:
|
||||
r = s.get(self.url)
|
||||
return BeautifulSoup(r.text, 'html.parser')
|
||||
|
||||
def _get_sections(self) -> list[MoodleCourseSection]:
|
||||
sections_raw = self.soup.find_all("li", {"class": "course-section"})
|
||||
return list(map(lambda x: MoodleCourseSection(x), sections_raw))
|
||||
|
||||
def set_parent_dir(self, parent_dir: [str, os.path], year: str = None) -> None:
|
||||
if year is None:
|
||||
year = self.url.split("/")[3]
|
||||
for i, sec in enumerate(self.sections):
|
||||
sec.set_parent_dir(os.path.join(parent_dir, f"{self.code} - {self.name}", year), i)
|
||||
Reference in New Issue
Block a user