Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

MIET Schedule API

Небольшая библиотека для получения и структурирования расписания указанных групп МИЭТ.

Возможности

  • Получение расписания для любой группы из списка МИЭТ.
  • Проверка существования группы перед запросом, используя официальное API.
  • Получение расписания на одну дату или диапазон дат, формат: ДД.ММ.ГГГГ или ДД.ММ.ГГГГ-ДД.ММ.ГГГГ.
  • Получение расписания на текущую, следующую или предыдущую неделю.
  • Кэширование данных в едином файле last_data.json, чтобы не мучать API МИЭТ.
  • Принудительное обновление кэша через параметр force=True.
  • Пропуск дней, состоящих только из военной подготовки, управляется флагом SKIP_MILITARY.
  • Автоматическое определение года начала семестра: если текущий месяц >= сентября, используется текущий год, иначе - предыдущий.
  • Возможность явно установить дату начала семестра через функцию set_semester_start().
  • Возврат результата с мета-информацией: isFromCache источник данных, data само расписание и meta - метаинформация о неделях для каждой даты.
  • Возврат в виде словаря или отформатированной строки JSON, это управляется параметрами return_json и pretty.

Важно: библиотека пока не учитывает каникулы и праздничные дни.

Структура вывода

{
  "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 // Общее количество недель
  }
}

Установка

Локальная установка / для разработки

pip install -e .

Установка из PyPI

pip install miet_schedule_api

Установка из GitHub

pip install git+https://github.com/dekkab/MietScheduleAPI.git

Использование

from 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

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages