No description
| .vscode | ||
| .gitignore | ||
| convert_ng.py | ||
| extract_ng.py | ||
| FS25_klassen.pdf | ||
| FS25_liste_dozierende.pdf | ||
| FS25_liste_module.pdf | ||
| HS24_klassen.pdf | ||
| HS24_liste_dozierende.pdf | ||
| HS24_liste_module.pdf | ||
| lib.py | ||
| main.py | ||
| Makefile | ||
| merge_modules.py | ||
| module_list.py | ||
| parse_module_info.py | ||
| README.md | ||
| requirements.txt | ||
| teacher_list.py | ||
| timetable.html.j2 | ||
| timetable_html.py | ||
Timetable extractor for FHNW
Requirements
Ghostscript installed for camelot, see: https://camelot-py.readthedocs.io/en/master/user/install-deps.html
brew install ghostscript tcl-tk
Python requirements
python3 -m venv venv
. venv/bin/activate
pip install -r requirements.txt
Usage
- Fetch the
modulgruppen.jsonfrom studenthub. This is required to aggregate information about modules, and external links - Download the module list, the teacher list and the stundenplan from inside.fhnw.ch
- Run
main.pyThis will run all the scripts in the proper orderteacher_list.py: extracting all teacher names from the pdf, and write it to teacher.jsonmodule_list.py: extracts all module names form the pdf, for later useparse_module_info.py: parses themodulgruppen.jsonand extracts the shortname, the name, and the Id to link to the website.extract_ng.py: Extracts the stundenplan from the PDF, and converts it into a dict with degree,class and page information aggregatedconvert_ng.py: Converts the dicts/dataframes into the format the modulplaner can handlemerge_modules.py: Merges modules found on multiple pages- Last but not least, write the
modules.json
- Copy the following files: modules.json, config.json, teacher.json