Skip to content

Скрипт, позволяющий спарсить расписание с сайта МИЭТ в ics-файл

License

Notifications You must be signed in to change notification settings

MPSU/schedule_parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Парсер расписания МИЭТ

Скрипт, позволяющий сгенерировать ics-файл для расписания конкретной группы, или же для занятий указанных групп конкретного преподавателя. Файл подобного формата можно импортировать в большинство онлайн-календарей. Скрипт способен обрабатывать ситуации начала семестра не с понедельника.

Для простоты работы, считается что большая перемена всегда происходит после второй пары. Скрипт генерирует занятие, которое повторяется 5 раз с периодичностью в 4 недели для каждой из недель (1-го числителя, 1-го знаменателя, 2-го числителя, 2-го знаменателя). Иными словами, если занятие проходит каждую неделю, вместо создания одного события, которое повторяется 20 раз каждую неделю, будет создано 4 события на 4 чередующиеся недели, каждое из которых повторяется 5 раз.

Событие повторяется 5 раз, а не 4, чтобы занятия попали и на 17-18ую недели. Можно генерировать и 16-недельное расписание, для этого необходимо изменить значение параметра repeat_number на 4.

Сдвоенные занятия (обычно это лабораторные работы или занятия по физ-ре) склеиваются в одно.

Скрипт позволяет использовать словарь аббревиатур для замены длинных названий предметов на что-то более короткое.

Зависимости

Для работы скрипта требуется сторонние библиотеки:

  • pyyaml,
  • requests,
  • icalendar,

которые можно установить командой:

pip install icalendar pyyaml requests

Режимы работы

Скрипт может работать в двух режимах:

  • преподавательском,
  • студенческом.

В режиме для преподавателя, скрипт парсит расписание всех перечисленных в конфиге групп на наличие у них занятий указанного преподавателя.

В студенческом режиме скрипт просто подготавливает файл расписания одной учебной группы.

Конфигурация

Скрипт довольно тонко настраивается с помощью конфига, описываемого в формате yaml. Список опций к настройке:

  • educator — имя преподавателя (необходима в "преподавательском" режиме);
  • groups — список групп (API МИЭТ отдает расписание только для конкретной группы);
  • group — имя группы для студенческого режима;
  • academic_hour_duration — длина академического часа;
  • short_recreation_duration — длина короткой перемены;
  • long_recreation_duration — длина большой перемены;
  • semester_starts_at — дата начала семестра;
  • class_names_cast — словарь аббревиатур;
  • repeat_number — число 4-недельных повторений (4 для 16-ти недель, 5 для добавления 17-18-ых недель);
  • add_weeklies — Добавлять ли еженедельные события с типом и номером учебной недели
  • calendar_file_name — имя генерируемого файла.

В студенческом режиме минимальная конфигурация должна содержать параметры:

  • group,
  • semester_starts_at

В преподавательском режиме, минимальная конфигурация должна содержать параметры:

  • educator,
  • groups,
  • semester_starts_at

Оптимальная конфигурация обоих режимов дополнительно содержит словарь class_names_cast.

Пример конфигурации вы можете посмотреть в config.yaml.

В случае отсутствия в файле конфигурации параметра semester_starts_at, он будет определён автоматически по следующей логике:

  • если семестр осенний, то дата его начала по умолчанию — это первый рабочий день начиная с первого сентября,
  • если семестр весенний, то дата его начала по умолчанию — это второй понедельник февраля.

Дата начала осеннего семестра определяется достаточно точно, весеннего — очень неточно.

Пример запуска

# Запуск в режиме преподавателя с указанием конфиг-файла
python calendar_automation.py --mode educator --config config.yaml
# Запуск в режиме студента без указания конфиг-файла
python calendar_automation.py --mode student --group ИВТ-31
# Запуск в режиме студента с указанием конфиг-файла
python calendar_automation.py --mode student --config config.yaml

About

Скрипт, позволяющий спарсить расписание с сайта МИЭТ в ics-файл

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages