tum_info
tum_info copied to clipboard
A bunch of useful information I've collected while studying at the Technical University of Munich.
A bunch of useful information I've collected while studying at the Technical University of Munich. This includes TUM course statistics or TUM exam statistics, schools, departments and more!
The contributors imagined/came up with all of the course information in this repo randomly, including the grades. All matches with real courses and grades are purely coincidental.
How to contribute
Offered courses
The offered courses database is maintained in this repository by Vuenc. Please direct your contributions there. Once they are accepted, notify me about the update.
For developers: to update the website with new courses, edit and run python scripts/course_offered_parse.py
from root folder.
It has the same dependencies as building the app above.
Course exam statistics
You can help expand this website with new information by adding your own course exam statistics!
A single course
In short, create a new issue based on this template by going here and replace the values with your own data. The description is copy-pasted onto the page directly and follows the markdown format (but you can use plain text too). After some time, the statistics you have submitted will appear on the website. For now there's a manual review step done by me, so don't worry too much about breaking the website. When I see that everything is ok, I put a label on the issue and GitHub Actions take care of the rest by adding a new page to the website and building it.
All your courses program
If you're looking for a simple way to send me your grades, you can contribute using the executable file (Windows, Linux, MacOS). You'll find a video guide here. Now you can generate a file with all your grades and send it over Telegram or any other of the communication channels listed in the app!
For Linux users: the app may not be executable initially when you download it. You can fix it by running chmod +x <file_path>
. Alternatively, you can create this script install_grades.sh
:
bash
#!/usr/bin/bash
version="1.0.1"
wget "https://github.com/mcmikecreations/tum_info/releases/download/$version/Grades"
chmod +x ./Grades
And then run it using bash install_grades.sh
.
For developers: to build the app, you need to:
- Install
python>=3.7
- Install
BeautifulSoup4 requests PySide6 pyinstaller
throughpip
. - You can test-run the app running
python scripts/course_glob_ui.py
from root folder. - To build it, run
pyinstaller scripts/course_glob_ui.spec
, the results will be placed in thedist
folder. - To package for MacOS, you need to have an additional utility installed through
brew install create-dmg
. Then run./scripts/course_glob_ui_build.sh
from root folder.
Grade download script
A handy script was created to extract all grade reports for a TUMOnline student account. To run the script:
- Install git, add it to PATH.
- Fork the repository, clone your fork.
- Install Python 3.7 or newer, add python and pip to PATH.
- Run
pip install requests
. - From repository root run
python scripts/course_glob.py [email protected] pass=42424242
. - If you get errors, report them by creating a new issue.
- Check endterm/retake filenames and field in files. Check exam_type, mode, lang fields in files.
- Commit changes, push to your fork, create a pull request.
API
An official unofficial TUM info API is offered with all of the tabular data from the website.
- description is a description of supported API endpoints.
- playground is a page where you can execute your own JS upon the API endpoints.
- schools.json has an unordered list of all supported schools and their departments. This data is used later for grouping and sorting the courses per-school and per-department.
- courses.json has an unordered list of all course exam statistics from the website, including the plot data. This is then grouped and displayed in the general courses page and per-school.
Feature requests and bug reports
There also are issue templates for such cases back on GitHub. If something is wrong or you want something to get better, here's what to do:
- Create a new issue and outline what is wrong and/or what you need.
- (Optionally) If you want to try and fix the issue, state it in a comment, fork the repo, make the changes, and submit a pull request.
Building the project yourself
Building instructions for the grade download app are listed above. To build the website, you need to install jekyll
by following the instructions from the official website.
Afterwards, in the root folder run the following commands:
-
bundle install
to install required packages -
bundle exec jekyll build
to build the website to the_site
folder -
bundle exec jekyll serve
to run the website locally
Scripts in the scripts
folder:
-
course-create.js
is meant for the GitHub Action to create a course file from a GitHub issue. -
course_functions.py
is a library used by other scripts for TUMOnline-related requests. -
course_glob.py
is a command-line utility script to download all grades from a particular student by username and password. -
course_glob_ui.py
is the main file of the GUI app to download all grades. -
course_glob_resources.py
is the resource file containing icons for the GUI app. -
course_glob_import.py
is an import command-line utility script to add grades of other students when they send them via JSON. -
course_glob_resources.qrc
is a QT resource description file for the GUI icons. -
course_glob_ui.spec
is a PyInstaller spec file to build single-file executables for the GUI app. -
course_glob_ui_build.sh
is a MacOS script to generate an installer package for the GUI app. -
course_html_parse.py
is a deprecated command-line utility script to download grades from an outdated website. -
course_offered_parse.py
is a command-line utility script to download offered courses from a vendor repository.