Files
VSTU_Schedule_Parser/vstu_parser_result_scheme.json
2025-10-15 15:08:33 +03:00

81 lines
6.5 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"actual_at": "0", // unix seconds когда было распарсено это расписание
"notice": "LEGAL INFORMATION HERE", // legal information
"stat": {
"total_parsing_time": 100.11 // сколько занял процесс парсинга от запуска программы (сек)
},
"version": "1", // версия = 1
"excels": [ // список всех эксель файлов которые были обработаны.
{
"filename": "эксель как на сайте.xls",
"url": "https://internet./path/to/эксель как на сайте.xls", // откуда парсер скачал
"download_place": "excels/temp.xls", // куда парсер скачал
"group_names_parsed": [""], // список названий групп которые удалось достать с этого файла
"facultet": "mag", // english name of facultet к которому относится этот эксель документ
"stat": {
"download": 0.314, // сколько скачивалось (сек)
"create_reader": 0.03, // сколько создавался Reader (сек), обычно у .xlsx это от нескольких секунд до минуты, а у .xls десятые доли секунды.
"parse": 0.00, // сколько парсился (сек)
"cycles": 2 // сколько парсер сделал циклов: по факту - сколько страниц в эксель файле
},
// дальше optional
"parser_error_cycle_1": "string desk from Parser", // _1 номер цикла. не больше stat.cycles
"error": {"...":"..."} // исключение в коде
}
],
"groups": { // список групп с данными о них
"имя-группы": {
"name": "имя-группы",
"position_human": "G6:J6", // range ячейки-заголовка группы в эксель таблице.
"slots": { // слоты - расписание этой группы на 2 недели
// важно если у группы нету например занятий в первый понидельник то и ключа не будет. => если у группы нету занятий вообще то slots = {} (пустому словарю)
// день определённой недели
// ключ - имя дня недели + (_1 OR _2 в зависимости от недели). Не полагайтесь на этот ключ, т.к. в каждой паре есть weekday (1-7) и weeknum (1-2).
// значение - список пар на этот день
ОНЕДЕЛЬНИК_1": {
"1-2": { // ключ - название времени пары (1-2, 2-3, 3-4 etc...), значение - информация о паре (о дисциплине в это время)
"excel_pos": "G7", // позиция в экселе
"discipline_name": "Великое знание российское", // название дисциплины (не всегда корректное)
"locations": [ // список локаций (не всегда корректный)
"В 1204"
],
"leads": [ // список лидеров (спикеров, вообщем преподователей) (не всегда корректный)
"Бадикова П.В."
],
"is_solid": true, // единая ли верхняя ячейка (т.е. ширина 4 колонки и она объединена в одну)
"time_coeff": 2, // по сути сколько пар длится пара. Тоесть если >1 то длится больше одной пары. Почти всегда 1, иногда 2. В редких случаях (химия) 3 :dead: соболезную трудящимся
"is_flow": false, // потоковая? определяется если ширина объединённой ячейки больше 4 (а 4 это размер колонки группы).
"lefttopmerged": { // частично отладочная информация, как раз о объединённой ячейке взятой как тык пальцем в верхнюю левую ячейку.
"width": 4,
"height": 2,
"excel_range": "G7:J8" // её range в экселе
},
"raw": [ // сырые данные. Содержание всех не пустых ячеек этой записи о паре. (SET data structure)
"Великое знание российское",
"В 1204б,лунатутможетбытьчтоугодно",
"даты и т.д. всё что там есть будет тут",
"практ. 4 час.",
"Преподов П.П."
],
"weekday": 1, // день недели 1- понидельник, 7 - воскр..
"weeknum": 1, // номер недели 1- первая 2-вторая.
// дальше optional
"pair_num_empty": {"..": "...", "restored": true}, // составители расписания лучшие и в макете забыли сбоку добавить [1-2] номер пары. Если restored=true то это недоразумение удалось исправить опираясь на предыдущую пару.
"to_many_parsing_time_coeff": true // если при попытке определить time_coeff, а он определяется по границам (borders) в эксель таблице, произошла ошибка (подавленный infinity loop)
}
}
},
"facultet": "mag", // факультет группы
"data_source": "эксельтаблица.xls" // название таблицы откуда были получены данные о этой группе
}
}
// безусловно перечислено не всё, но многое излишне.
// ~ Stanislav Mironov
}