Skip to content
Asmat1kPublic

About

ITMO Schedule Parser - Экспорт расписания ИТМО в календарь .ics

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

10 Commits

Folders and files

Repository files navigation

ISP — Itmo Schedule Parser

Браузерное расширение (Chrome, Manifest V3), которое сканирует страницу расписания в личном кабинете ИТМО (my.itmo.ru) и экспортирует его в файл .ics для импорта в Google Calendar.

Как это работает

  1. На странице расписания в правом верхнем углу календаря появляется кнопка «Экспорт в Google Calendar».
  2. По нажатию расширение сбрасывает вид на текущий месяц и идёт вперёд месяц за месяцем, считывая занятия из DOM, пока не встретит пустой месяц (не более 5 месяцев). Готовность определяется по aria-busy у блоков .b-overlay-wrap, окружающих заголовок и таблицу календаря. Расширение отслеживает изменения DOM и при смене месяца ждёт начала и завершения загрузки таблицы, а не только смены заголовка. Занятия считываются без опроса по таймеру и фиксированных пауз. Если загрузка или переключение месяца зависли, через 30 секунд показывается ошибка вместо неполного экспорта.
  3. Перед скачиванием показывается окно предпросмотра: сколько найдено занятий и предметов, сколько месяцев просканировано и список предметов — можно подтвердить экспорт или отменить.
  4. После подтверждения занятия группируются по (предмет, день недели, время), интервал (еженедельно / раз в две недели) определяется по реальным датам, и формируется файл itmo-schedule.ics.

Экспортируются только будущие занятия (начиная с сегодняшнего дня). Каждое сочетание (предмет, день, время) — отдельное событие с правилом повторения, поэтому отдельные пары легко удалять в календаре.

Что НЕ экспортируется

Страница расписания отдаёт в DOM только название предмета и время начала — без преподавателя, аудитории и времени окончания. Длительность пары задана константой LESSON_MINUTES = 90 в src/ics.ts.


Проверка в реальном браузере

Шаг 1. Соберите расширение

В терминале, в папке проекта:

npm install   # если ещё не делали
npm run build
npm test      # необязательно: проверка генерации .ics

После этого появится папка dist/ с расширением: content.js, manifest.json и папка icons/. Именно её Chrome будет загружать.

Шаг 2. Загрузите расширение в Chrome

  1. Откройте chrome://extensions (вставьте в адресную строку).
  2. Включите переключатель Developer mode (Режим разработчика) — справа вверху.
  3. Нажмите Load unpacked (Загрузить распакованное).
  4. Выберите папку dist/ (не корень проекта, а именно dist/).
  5. Расширение появится в списке. Убедитесь, что у него нет красной надписи об ошибке.

Шаг 3. Откройте расписание

  1. Зайдите на my.itmo.ru и авторизуйтесь.
  2. Перейдите в раздел Расписание.
  3. Убедитесь, что включён вид «Месяц» (он по умолчанию активен — переключатель Неделя/Месяц справа над календарём).
  4. В правом верхнем углу календаря должна появиться синяя кнопка «Экспорт в Google Calendar».

Если кнопки нет — подождите 1–2 секунды (она добавляется по таймеру) или обновите страницу.

Шаг 4. Запустите экспорт

  1. Нажмите кнопку «Экспорт в Google Calendar».
  2. Календарь сам перескочит на текущий месяц и начнёт листать вперёд — на кнопке будет видно Сканирование… (1), (2), и т.д.
  3. Когда дойдёт до пустого месяца — остановится и вернётся на сегодня, а на экране появится окно предпросмотра: Нашёл N занятий, M предметов, Просканировано: K мес. и список предметов.
  4. Нажмите «Скачать .ics», чтобы сохранить файл itmo-schedule.ics, или «Отмена», чтобы ничего не скачивать.
  5. После скачивания на кнопке появится Готово: N занятий (M мес.) (или Экспорт отменён, если вы закрыли окно).

Шаг 5. Проверьте сам файл .ics

Прежде чем заливать в Google Calendar, откройте скачанный файл в текстовом редакторе и проверьте глазами:

  • Названия предметов (SUMMARY:) читаются нормально, без «кракозябр».
  • Даты и время (DTSTART:) совпадают с тем, что в расписании.
  • Повторения (RRULE: или RDATE:) выглядят разумно — например, FREQ=WEEKLY;INTERVAL=2 для пар раз в две недели.

Шаг 6. Импортируйте в Google Calendar

  1. Откройте calendar.google.com.
  2. Настройки (шестерёнка) → Settings → Import & export → Import.
  3. Выберите файл itmo-schedule.ics, укажите календарь и нажмите Import.
  4. Проверьте, что события встали на правильные дни и время.

Совет: для первого раза импортируйте в отдельный/тестовый календарь, чтобы при ошибке легко всё удалить, не задев основной.

About

ITMO Schedule Parser - Экспорт расписания ИТМО в календарь .ics

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages