No description
Find a file
2024-12-09 18:34:11 +01:00
.vscode HS24 2024-05-21 14:32:32 +02:00
.gitignore add convert-ng/extract-ng 2024-06-03 22:16:21 +02:00
convert_ng.py Fix a few filenames, enabling to run the scripts independently, re-add timetable.html generator, add filter to timetable.html for module groups 2024-12-09 18:34:11 +01:00
extract_ng.py Fix a few filenames, enabling to run the scripts independently, re-add timetable.html generator, add filter to timetable.html for module groups 2024-12-09 18:34:11 +01:00
FS25_klassen.pdf Fix a few filenames, enabling to run the scripts independently, re-add timetable.html generator, add filter to timetable.html for module groups 2024-12-09 18:34:11 +01:00
FS25_liste_dozierende.pdf Fix a few filenames, enabling to run the scripts independently, re-add timetable.html generator, add filter to timetable.html for module groups 2024-12-09 18:34:11 +01:00
FS25_liste_module.pdf Fix a few filenames, enabling to run the scripts independently, re-add timetable.html generator, add filter to timetable.html for module groups 2024-12-09 18:34:11 +01:00
HS24_klassen.pdf Add pdf-config.json to map each table to a degree_prg, parse full_name from parsed modules 2024-05-24 11:17:36 +02:00
HS24_liste_dozierende.pdf Add makefile, update README, remove unused files 2024-05-26 18:17:34 +02:00
HS24_liste_module.pdf Add makefile, update README, remove unused files 2024-05-26 18:17:34 +02:00
lib.py Fix a few filenames, enabling to run the scripts independently, re-add timetable.html generator, add filter to timetable.html for module groups 2024-12-09 18:34:11 +01:00
main.py Fix a few filenames, enabling to run the scripts independently, re-add timetable.html generator, add filter to timetable.html for module groups 2024-12-09 18:34:11 +01:00
Makefile cleanup 2024-06-03 23:24:50 +02:00
merge_modules.py Fix a few filenames, enabling to run the scripts independently, re-add timetable.html generator, add filter to timetable.html for module groups 2024-12-09 18:34:11 +01:00
module_list.py Fix a few filenames, enabling to run the scripts independently, re-add timetable.html generator, add filter to timetable.html for module groups 2024-12-09 18:34:11 +01:00
parse_module_info.py Cleanup 2024-06-03 23:11:06 +02:00
README.md Cleanup 2024-06-03 23:11:06 +02:00
requirements.txt remove poppler from reqs 2024-06-03 23:26:05 +02:00
teacher_list.py Fix a few filenames, enabling to run the scripts independently, re-add timetable.html generator, add filter to timetable.html for module groups 2024-12-09 18:34:11 +01:00
timetable.html.j2 Fix a few filenames, enabling to run the scripts independently, re-add timetable.html generator, add filter to timetable.html for module groups 2024-12-09 18:34:11 +01:00
timetable_html.py Fix a few filenames, enabling to run the scripts independently, re-add timetable.html generator, add filter to timetable.html for module groups 2024-12-09 18:34:11 +01:00

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

  1. Fetch the modulgruppen.json from studenthub. This is required to aggregate information about modules, and external links
  2. Download the module list, the teacher list and the stundenplan from inside.fhnw.ch
  3. Run main.py This will run all the scripts in the proper order
    1. teacher_list.py: extracting all teacher names from the pdf, and write it to teacher.json
    2. module_list.py: extracts all module names form the pdf, for later use
    3. parse_module_info.py: parses the modulgruppen.json and extracts the shortname, the name, and the Id to link to the website.
    4. extract_ng.py: Extracts the stundenplan from the PDF, and converts it into a dict with degree,class and page information aggregated
    5. convert_ng.py: Converts the dicts/dataframes into the format the modulplaner can handle
    6. merge_modules.py: Merges modules found on multiple pages
    7. Last but not least, write the modules.json
  4. Copy the following files: modules.json, config.json, teacher.json