Skip to content

Commit dde0a1c

Browse files
authored
Merge pull request #3 from TINF21CS1/dev
working prototype v0.1
2 parents 4535fe0 + 2f7820a commit dde0a1c

File tree

3 files changed

+39
-15
lines changed

3 files changed

+39
-15
lines changed

CampusNet.py

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import sys
2-
from typing import Union
2+
from typing import Union, List
33
from dataclasses import dataclass
44
import requests
55
from bs4 import BeautifulSoup
@@ -15,9 +15,10 @@ class Module:
1515
name: str
1616
credits: float
1717
status: str
18-
semester: str
18+
semesters: List[str]
1919
id: str
2020
grade: Union[float, None] = None
21+
2122

2223
@dataclass
2324
class Exam:
@@ -159,15 +160,22 @@ def _get_modules(self):
159160
# getting id for this module
160161
exams_button = cells[5].find("a")
161162
exams_id = exams_button.get("href").split(",-N")[-2]
162-
modules.append(Module(
163-
num=cells[0].text.strip(),
164-
name=cells[1].text.strip(),
165-
credits=float(cells[3].text.strip().replace(',', '.')),
166-
status=cells[4].text.strip(),
167-
semester=semester,
168-
id=exams_id,
169-
grade=grade
170-
))
163+
num = cells[0].text.strip()
164+
if not any(module.num == num for module in modules):
165+
modules.append(Module(
166+
num=num,
167+
name=cells[1].text.strip(),
168+
credits=float(cells[3].text.strip().replace(',', '.')),
169+
status=cells[4].text.strip(),
170+
semesters=[semester],
171+
id=exams_id,
172+
grade=grade
173+
))
174+
else:
175+
for module in modules:
176+
if module.num == num:
177+
module.semesters.append(semester)
178+
break
171179
elif len(cells) != 0:
172180
# FIXME: proper logging
173181
print("Unexpected number of cells:",
@@ -207,7 +215,7 @@ def get_exams_for_module(self, module: Module):
207215
except ValueError:
208216
grade = None
209217
exams.append(Exam(
210-
semester=module.semester,
218+
semester=cells[0].text.strip(),
211219
description=cells[1].text.strip(),
212220
grade=grade,
213221
))

Readme.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
```python
44
$ python3 -i CampusNet.py
5-
>>> s = CampusNetSession("s######@student.dhbw-mannheim.de", "################")
5+
>>> s = CampusNetSession("s***REMOVED***@student.dhbw-mannheim.de", "***REMOVED***")
66
>>> s.modules
7-
[Module(num='T3_1000', name='Praxisprojekt I', credits=20.0, status='', semester='SoSe 2022', id='381683598069776', grade=None), Module(num='T3INF1001', name='Mathematik I', credits=8.0, status='', semester='SoSe 2022', id='380685560144022', grade=None), Module(num='T3INF1002', name='Theoretische Informatik I (MA-TINF21CS1)', credits=5.0, status='', semester='SoSe 2022', id='382855008624547', grade=None), Module(num='T3INF1003', name='Theoretische Informatik II', credits=5.0, status='', semester='SoSe 2022', id='382214102615788', grade=None), Module(num='T3INF1004', name='Programmieren', credits=9.0, status='', semester='SoSe 2022', id='379974839816701', grade=None), Module(num='T3INF1005', name='Schlüsselqualifikationen', credits=5.0, status='', semester='SoSe 2022', id='379974840574866', grade=None), Module(num='T3INF4102', name='Einführung in die Kryptologie', credits=5.0, status='', semester='SoSe 2022', id='382214104541196', grade=None), Module(num='T3INF9000', name='Web and App Engineering', credits=5.0, status='', semester='SoSe 2022', id='379974842066225', grade=None), Module(num='T3INF1001', name='Mathematik I', credits=8.0, status='', semester='WiSe 2021/22', id='380685560144022', grade=None), Module(num='T3INF1006', name='Technische Informatik I', credits=5.0, status='bestanden', semester='WiSe 2021/22', id='380703425164844', grade=1.2), Module(num='T3INF9001', name='Cyber Security Basics', credits=3.0, status='bestanden', semester='WiSe 2021/22', id='379974841329087', grade=1.6)]
8-
>>> s.get_exams_for_module(s.modules[10])
7+
[Module(num='T3_1000', name='Praxisprojekt I', credits=20.0, status='', semesters=['SoSe 2022'], id='381683598069776', grade=None), Module(num='T3INF1001', name='Mathematik I', credits=8.0, status='', semesters=['SoSe 2022', 'WiSe 2021/22'], id='380685560144022', grade=None), Module(num='T3INF1002', name='Theoretische Informatik I (MA-TINF21CS1)', credits=5.0, status='', semesters=['SoSe 2022'], id='382855008624547', grade=None), Module(num='T3INF1003', name='Theoretische Informatik II', credits=5.0, status='', semesters=['SoSe 2022'], id='382214102615788', grade=None), Module(num='T3INF1004', name='Programmieren', credits=9.0, status='', semesters=['SoSe 2022'], id='379974839816701', grade=None), Module(num='T3INF1005', name='Schlüsselqualifikationen', credits=5.0, status='', semesters=['SoSe 2022'], id='379974840574866', grade=None), Module(num='T3INF4102', name='Einführung in die Kryptologie', credits=5.0, status='', semesters=['SoSe 2022'], id='382214104541196', grade=None), Module(num='T3INF9000', name='Web and App Engineering', credits=5.0, status='', semesters=['SoSe 2022'], id='379974842066225', grade=None), Module(num='T3INF1006', name='Technische Informatik I', credits=5.0, status='bestanden', semesters=['WiSe 2021/22'], id='380703425164844', grade=1.2), Module(num='T3INF9001', name='Cyber Security Basics', credits=3.0, status='bestanden', semesters=['WiSe 2021/22'], id='379974841329087', grade=1.6)]
8+
>>> s.get_exams_for_module(s.modules[9])
99
[Exam(semester='WiSe 2021/22', description='Hausarbeit (100%)', grade=1.6)]
1010
```

print_exams_as_table.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import CampusNet
2+
from tabulate import tabulate
3+
from getpass import getpass
4+
5+
username = input("Username (mit @!): ")
6+
password = getpass()
7+
8+
s = CampusNet.CampusNetSession(username, password)
9+
10+
table = list()
11+
12+
for module in s.modules:
13+
for exam in s.get_exams_for_module(module):
14+
table.append([module.num, module.name, exam.semester, exam.description, exam.grade])
15+
16+
print(tabulate(table))

0 commit comments

Comments
 (0)