Skip to content

Latest commit

 

History

21 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

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

Особенности:

  • для простоты работы, считается что большая перемена всегда происходит после второй пары;
  • скрипт формирует 18-недельное расписание (16 основных учебных недель, плюс две зачетные недели);
  • сдвоенные занятия (обычно это лабораторные работы или занятия по физ-ре) склеиваются в одно;
  • скрипт позволяет использовать словарь аббревиатур для замены длинных названий предметов на что-то более короткое.
  • скрипт генерирует стабильные идентификаторы событий, это значит что если вдруг вы допустите ошибку и решите перегенерировать файл, при импорте вы не получите дубликаты событий, у вас появятся только новые записи обновившихся событий.

Результат импорта ics-файла, сгенерированным скриптом в google-календарь:

  • для студента image
  • для преподавателя image

Зависимости

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

  • pyyaml,
  • requests,
  • icalendar,

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

pip install icalendar pyyaml requests

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

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

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

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

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

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

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

Основные опции скрипта:

  • educator — имя преподавателя (необходима в "преподавательском" режиме);
  • groups — список групп (API МИЭТ отдает расписание только для конкретной группы);
  • group — имя группы для студенческого режима;
  • semester_starts_at — дата начала семестра;
  • class_names_cast — словарь аббревиатур;

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

  • group,
  • semester_starts_at

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

  • educator,
  • groups,
  • semester_starts_at

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

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

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

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

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

Полный список опций настройки скрипта:

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

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

# Запуск в режиме преподавателя с указанием конфиг-файла
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

Stars

12 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages