Skip to content

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 использовать для календарей. В твоём новом репозитории перейди в SettingsSecrets and variablesActions. Добавь 3 новых секрета (New repository secret):

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

Warning

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

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

  1. Перейди в SettingsPages.
  2. В разделе Build and deploymentSource выбери GitHub Actions.

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

  1. Перейди на вкладку Actions.
  2. Слева выбери воркфлоу Sync & Deploy ITMO Schedule.
  3. Нажми Run workflowRun 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