81 lines
6.5 KiB
JSON
81 lines
6.5 KiB
JSON
{
|
||
"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
|
||
} |