Небольшая библиотека для получения и структурирования расписания указанных групп МИЭТ.
- Получение расписания для любой группы из списка МИЭТ.
- Проверка существования группы перед запросом, используя официальное API.
- Получение расписания на одну дату или диапазон дат, формат:
ДД.ММ.ГГГГилиДД.ММ.ГГГГ-ДД.ММ.ГГГГ. - Получение расписания на текущую, следующую или предыдущую неделю.
- Кэширование данных в едином файле
last_data.json, чтобы не мучать API МИЭТ. - Принудительное обновление кэша через параметр
force=True. - Пропуск дней, состоящих только из военной подготовки, управляется флагом
SKIP_MILITARY. - Автоматическое определение года начала семестра: если текущий месяц >= сентября, используется текущий год, иначе - предыдущий.
- Возможность явно установить дату начала семестра через функцию
set_semester_start(). - Возврат результата с мета-информацией:
isFromCacheисточник данных,dataсамо расписание иmeta- метаинформация о неделях для каждой даты. - Возврат в виде словаря или отформатированной строки JSON, это управляется параметрами
return_jsonиpretty.
Важно: библиотека пока не учитывает каникулы и праздничные дни.
pip install -e .pip install miet_schedule_apipip install git+https://github.com/dekkab/MietScheduleAPI.gitfrom miet_schedule_api import *
# Получить список всех существующих групп
groups = get_groups_list()
print(groups)
# Расписание на один день, смотрим на само расписание без метаданных
schedule = get_schedule(group="ИТД-11", date_str="01.09.2026")
print(schedule["data"])
# Диапазон дат, вдобавок возвращаем и красивую JSON-строку
schedule_json = get_schedule_range(
group="ИТД-11",
start_date_str="01.09.2026",
end_date_str="05.09.2026",
return_json=True,
pretty=True
)
print(schedule_json)
# Расписание+метаданные текущей недели с понедельника по воскресенье
current_week = get_current_week(group="ИТД-11", return_json=True, pretty=True)
print(current_week)
# Расписание+метаданные следующей недели относительно сегодня
next_week = get_next_week(group="ИТД-11", return_json=True, pretty=True)
print(next_week)
# Расписание+метаданные предыдущей недели относительно заданной даты
prev_week = get_previous_week(group="ИТД-11", date_str="15.09.2026", return_json=True, pretty=True)
print(prev_week)group(str, обязательный) - код группы.return_json(bool, default=False) - если True, возвращает строку JSON вместо словаря.pretty(bool, default=False) - если True иreturn_json=True, JSON выводится с отступами.force(bool, default=False) - принудительно запрашивает данные с сервера, игнорируя кэш.date_str(str) - дата в форматеДД.ММ.ГГГГ, для функций недели опциональна.start_date_str,end_date_str(str) - начальная и конечная даты диапазона.
pip install build
python -m buildБазовые настройки по умолчанию находятся в miet_schedule_api/consts.py:
API_URL- URL для запроса расписания.GROUPS_URL- URL для получения списка групп.TOTAL_WEEKS- общее количество недель в семестре, по умолчанию 20.SKIP_MILITARY- пропускать ли дни с военной подготовкой.SEMESTER_START- автоматически вычисляется, но можно переопределить, если нужно.
MIT
{ "isFromCache": true, // Вывод был закэширован, или было прямое обращение к API? "data": { "01.09.2026": { // День "1": { "time": ["09:00", "10:20"], "title": "Название", "type": "Лекция", "full_name": "Фамилия Имя Отчество", "room": "1201" }, ... }, "02.09.2026": {...}, ... }, "meta": { "weeks": { "01.09.2026": { "number": 1, // Номер недели по счёту в этом дне "type": 0, // Тип недели, 1-й/2-й числитель/знаменатель в виде простого ID "typeString": "Числитель - 1" // Тоже самое, но уже приведённое к читаемому виду }, "02.09.2026": {...}, ... }, "total_weeks": 20 // Общее количество недель } }