ITMO.Sync — это serverless приложение для автоматического экспорта твоего расписания ИТМО в формат iCalendar (.ics).
Благодаря гибкой системе конфигурации ты можешь настроить отображение пар, переименовывать дисциплины и скрывать лишнее. Проект позволяет подписаться на готовое расписание с любого устройства (Apple Calendar, Google Calendar, Outlook и др.), поддерживая календарь в актуальном состоянии абсолютно бесплатно и автономно за счёт использования GitHub Actions и GitHub Pages.
Note
Это Serverless решение (работает через GitHub Actions без хостинга). Если ищешь серверное решение, то советую madfanat/itmom.
- Автоматизация: Запускается по расписанию в GitHub Actions, парсит расписание и публикует ссылки на GitHub Pages. Никакого сервера, хостинга и скачиваний не нужно!
- Категоризация: Расписание автоматически разбивается на удобные под-календари: Лекции, Практики/Лабораторные, Экзамены, Спорт, Бронирования и т.д. Можно подписаться только на нужные или сразу на все.
- Персонализация: Полный контроль над тем, как выглядят события в календаре через шаблонизацию. Можно переименовывать или исключать пары из календаря при помощи гибкой фильтрации.
- Безопасность: Твой репозиторий можно совершенно безопасно делать публичным (это нужно, чтобы использовать GitHub Actions и GitHub Pages абсолютно бесплатно), так как вся приватная информация надёжно защищена:
- Независимая инфраструктура: Проект работает как GitHub Template. Ты создаёшь свою собственную изолированную копию репозитория, поэтому все вычисления и хранение данных происходят исключительно на твоём личном аккаунте.
- Секреты (Secrets): Твои логин и пароль хранятся в приватных и зашифрованных GitHub Secrets. Они никогда не попадают в код или файлы репозитория. При этом, посмотреть их можно только один раз при создании.
- Защита ссылок: Доступ к готовым календарям защищён секретным префиксом, который придумываешь ты сам. Без знания этого хэша никто не сможет получить доступ к твоему расписанию.
- Удаление артефактов: Скрипт автоматически удаляет промежуточные артефакты сборки сразу после завершения деплоя, поэтому твой хэш невозможно подглядеть в логах или архивах Actions.
- Асинхронизация: Из-за особенностей бесплатного GitHub Actions, расписание может обновляться с задержкой. Если для тебя важно оперативно получать изменения, то советую серверное решение madfanat/itmom.
- Нажми зелёную кнопку «Use this template» → Create a new repository в верхней части этой страницы.
Warning
Оставь тип репозитория Public. GitHub предоставляет безлимитный Actions только для публичных репозиториев. Всё безопасно: твои пароли спрятаны в Secrets, а ссылки на календари будут защищены секретным префиксом, который задаёшь ты сам.
Приложению нужно знать, как войти в личный кабинет, а также какой секретный URL использовать для календарей. В твоём новом репозитории перейди в Settings → Secrets and variables → Actions. Добавь 3 новых секрета (New repository secret):
ITMO_SYNC_USERNAME— твой табельный номер (например,123456) или другой известный тебе логин.ITMO_SYNC_PASSWORD— твой пароль от личного кабинета.ITMO_SYNC_URL_HASH— случайная секретная строка. Она будет добавлена к ссылке, чтобы ограничить внешний доступ. Например, сгенерируй случайный UUID, хэш или сложную строку с допустимыми символами.
Warning
Обязательно запомни указанную строку, она понадобится при доступе к расписанию.
- Перейди в Settings → Pages.
- В разделе Build and deployment → Source выбери GitHub Actions.
- Перейди на вкладку Actions.
- Слева выбери воркфлоу Sync & Deploy ITMO Schedule.
- Нажми Run workflow → Run workflow.
- После завершения сборки, на вкладке Pages появится базовая ссылка на твой сайт.
Tip
Чтобы открыть само расписание, тебе нужно вручную добавить твой секретный хэш в конец этой ссылки. Итоговый URL должен выглядеть так: https://<твой-юзернейм>.github.io/<имя-репозитория>/<твой-секретный-хэш>/. Перейди по ней — там твой личный сайт с ссылками на подписку!
Дальнейшие обновления и деплой расписания будут происходить автоматически — по заданному расписанию или при любом пуше в твой репозиторий.
Ты можешь гибко настроить внешний вид событий, переименовать или исключать пары и многое другое. Для этого достаточно отредактировать .yaml файлы в папке config/ твоего репозитория.
Подробную инструкцию и справочник по настройке читай в config/README.md.
- Спасибо @madfanat (Timofey Smolyankin) за идею, подтолкнувшую на создание этого проекта.
- Основа внутренней библиотеки для работы с API ИТМО (
itmo_schedule) взята из проекта madfanat/itmom.
Этот проект распространяется под лицензией MIT. Подробнее смотри в файле LICENSE.