Skip to content

arseniiarsenii/herzen-schedule-to-ics

Repository files navigation

Herzen Schedule Export

О проекте

Herzen Schedule Export осуществляет парсинг веб-страницы с расписанием выбранной группы на сайте guide.herzen.spb.ru и конвертацию в файл iCalendar (.ics) с возможностью последующего импорта в Google календарь, Outlook и другие календари.

Публичная версия Herzen Schedule Export на Heroku

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

  • Домашняя страница имеет вид: index page

  • Поле для выбора группы — одновременно выпадающий список и строка поиска. Вы можете найти свою группу в списке, но, т.к. Герцена имеет порядка 1300 групп, это может быть не самый удобный вариант. Гораздо удобнее поставить курсор в поле для ввода и начать вводить название направления, института или ID группы: group searching

  • Как найти ID группы: найдите ссылку с расписанием вашей группы на сайте Герцена. Она будет иметь вид: https://guide.herzen.spb.ru/static/schedule_dates.php?id_group=12460. Пятизначное число в конце - ID вашей группы.

  • Номер подгруппы. После выбора вашей группы из списка, система сама определит число подгрупп в вашей учебной группе и предложит выбрать: subgroup selection Если система определит, что в вашей ученой группе нет подгрупп (1 единственная подгруппа), выбрать подгруппу предложено не будет.

  • После ввода данных нажмите на кнопку "Загрузить". Начнется загрузка вашего файла. Примечание: если файл уже был сгенерирован кем-то до вас — загрузка начнется сразу, если файл генерируется впервые, то этот процесс может занять до 40 секунд. Не закрывайте страницу. Причина в медленном сайте Герцена, загрузка страницы с расписанием обычно занимает порядка 30-40 секунд.

  • Скачанный ics файл импортируйте в свой любимый календарь. Будут созданы события для каждого занятия, указанного в расписании. В поле "место" будет указана аудитория, в описании также будет указано место проведения занятия (не во всех календарях есть поле "место"). Помимо места в описании события будут: имя преподавателя, ссылка на курс предмета в Moodle (если эти данные были указаны в расписании).

Быстрое развертывание с помощью Docker

Сервер может быть развернут в считанные минуты благодаря Docker. Пример для систем на базе Debian:

  1. Обновить установленные пакеты: sudo apt update && sudo apt upgrade -y

  2. Установить Git: sudo apt install -y git

  3. Установить Docker: Инструкция

  4. Скачать репозиторий с GitHub и перейти в директорию с ним: git clone https://github.com/arseniiarsenii/herzen-schedule-to-ics.git && cd herzen-schedule-to-ics

  5. Развернуть сервер в Docker контейнере: sudo docker-compose up

Сервер будет развёрнут по адресу http://0.0.0.0:8080.

Техническая реализация

Использованные технологии

  • Язык Python 3
  • Библиотека Beautiful Soup
  • Фреймворк Semantic UI
  • Веб-фреймворк Bottle
  • Веб-сервер Gunicorn
  • Платформа Heroku
  • Система контейнеризации Docker
  • Язык Javascript
  • Модуль Ics

Производительность

Для хостинга сайта достаточно VPS с 1 ядром и 1 гб ОЗУ.

После каждого запроса скачанная страница кешируется, готовый ics файл сохраняется. При повторном запросе расписания для той же группы возвращается уже готовый файл. Таким образом достигается экономия ресурсов машины и оптимальная скорость работы.

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

Спасибо Александру Мазуренко за помощь в разработке фронтенда.

Лицензия

Код данного проекта опубликован под лицензией GNU GPL v3.0.

About

Convert Herzen uni timetable to an ics file

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published