Skip to content

About

Serverless & highly customizable ITMO University schedule parser and iCalendar exporter. Runs automatically on GitHub Actions with zero hosting required

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Repository files navigation

🗓️ ITMO.Sync

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.

🏁 Начало работы:

Шаг 1: Создай свой репозиторий

  1. Нажми зелёную кнопку «Use this template» → Create a new repository в верхней части этой страницы.

Warning

Оставь тип репозитория Public. GitHub предоставляет безлимитный Actions только для публичных репозиториев. Всё безопасно: твои пароли спрятаны в Secrets, а ссылки на календари будут защищены секретным префиксом, который задаёшь ты сам.

Шаг 2: Настрой секреты (Secrets)

Приложению нужно знать, как войти в личный кабинет, а также какой секретный URL использовать для календарей. В твоём новом репозитории перейди в Settings → Secrets and variables → Actions. Добавь 3 новых секрета (New repository secret):

  • ITMO_SYNC_USERNAME — твой табельный номер (например, 123456) или другой известный тебе логин.
  • ITMO_SYNC_PASSWORD — твой пароль от личного кабинета.
  • ITMO_SYNC_URL_HASH — случайная секретная строка. Она будет добавлена к ссылке, чтобы ограничить внешний доступ. Например, сгенерируй случайный UUID, хэш или сложную строку с допустимыми символами.

Warning

Обязательно запомни указанную строку, она понадобится при доступе к расписанию.

Шаг 3: Включи GitHub Pages

  1. Перейди в Settings → Pages.
  2. В разделе Build and deployment → Source выбери GitHub Actions.

Шаг 4: Запусти сборку

  1. Перейди на вкладку Actions.
  2. Слева выбери воркфлоу Sync & Deploy ITMO Schedule.
  3. Нажми Run workflow → Run workflow.
  4. После завершения сборки, на вкладке Pages появится базовая ссылка на твой сайт.

Tip

Чтобы открыть само расписание, тебе нужно вручную добавить твой секретный хэш в конец этой ссылки. Итоговый URL должен выглядеть так: https://<твой-юзернейм>.github.io/<имя-репозитория>/<твой-секретный-хэш>/. Перейди по ней — там твой личный сайт с ссылками на подписку!

Дальнейшие обновления и деплой расписания будут происходить автоматически — по заданному расписанию или при любом пуше в твой репозиторий.

⚙️ Конфигурация:

Ты можешь гибко настроить внешний вид событий, переименовать или исключать пары и многое другое. Для этого достаточно отредактировать .yaml файлы в папке config/ твоего репозитория.

Подробную инструкцию и справочник по настройке читай в config/README.md.

💗 Благодарности:

  • Спасибо @madfanat (Timofey Smolyankin) за идею, подтолкнувшую на создание этого проекта.
  • Основа внутренней библиотеки для работы с API ИТМО (itmo_schedule) взята из проекта madfanat/itmom.

📄 Лицензия:

Этот проект распространяется под лицензией MIT. Подробнее смотри в файле LICENSE.

About

Serverless & highly customizable ITMO University schedule parser and iCalendar exporter. Runs automatically on GitHub Actions with zero hosting required

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Contributors

Languages