mirror of
https://github.com/Code-For-Groningen/temmies.git
synced 2025-07-05 12:44:58 +02:00
Formatted, debugging. Added exception.
This commit is contained in:
@ -1,14 +1,70 @@
|
||||
from login import login
|
||||
from Year import Year
|
||||
import urllib3
|
||||
from requests import Session
|
||||
from bs4 import BeautifulSoup
|
||||
|
||||
# Disable warnings
|
||||
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
|
||||
|
||||
class Themis:
|
||||
def __init__(self):
|
||||
self.session = login()
|
||||
def __init__(self,user:str, passwd:str):
|
||||
self.session = self.login(user,passwd)
|
||||
self.years = []
|
||||
self.url = "https://themis.housing.rug.nl/course/"
|
||||
|
||||
def getYears(self):
|
||||
pass
|
||||
def login(self, user, passwd):
|
||||
headers = {
|
||||
"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chromium/80.0.3987.160 Chrome/80.0.3987.163 Safari/537.36"
|
||||
}
|
||||
|
||||
def getYear(self, end:int):
|
||||
pass
|
||||
data = {
|
||||
"user": user,
|
||||
"password":passwd,
|
||||
"null": None
|
||||
}
|
||||
|
||||
with Session() as s:
|
||||
url = 'https://themis.housing.rug.nl/log/in'
|
||||
r = s.get(url,headers=headers,verify=False)
|
||||
soup = BeautifulSoup(r.text, 'lxml')
|
||||
|
||||
# get the csrf token and add it to payload
|
||||
csrfToken = soup.find('input',attrs = {'name':'_csrf'})['value']
|
||||
data['_csrf'] = csrfToken
|
||||
|
||||
# Login
|
||||
r = s.post(url,data=data,headers = headers)
|
||||
|
||||
# check if login was successful
|
||||
log_out = "Welcome, logged in as" in r.text
|
||||
if not log_out:
|
||||
raise Exception(f"Login for user {user} failed")
|
||||
|
||||
return s
|
||||
|
||||
|
||||
def getYear(self, start:int, end:int):
|
||||
# Get the current year
|
||||
return Year(self.session, self, start, end)
|
||||
|
||||
def allYears(self):
|
||||
# All of them are in a big ul at the beginning of the page
|
||||
r = self.session.get(self.url)
|
||||
soup = BeautifulSoup(r.text, 'lxml')
|
||||
ul = soup.find('ul', class_='round')
|
||||
lis = ul.find_all('li', class_='large')
|
||||
years = []
|
||||
for li in lis:
|
||||
# format: 2019-2020
|
||||
year = li.a.text.split("-")
|
||||
years.append(Year(self.session, self, int(year[0]), int(year[1])))
|
||||
|
||||
return years # Return a list of year objects
|
||||
|
||||
|
||||
# This is the main file, so we have to run the main function
|
||||
|
||||
def main():
|
||||
themis = Themis()
|
||||
year = themis.getYear(2019, 2020)
|
||||
print(year.getCourses())
|
||||
|
Reference in New Issue
Block a user