Herzen Schedule Export осуществляет парсинг веб-страницы с расписанием выбранной группы на сайте guide.herzen.spb.ru и конвертацию в файл iCalendar (.ics) с возможностью последующего импорта в Google календарь, Outlook и другие календари.
Публичная версия Herzen Schedule Export на Heroku
-
Поле для выбора группы — одновременно выпадающий список и строка поиска. Вы можете найти свою группу в списке, но, т.к. Герцена имеет порядка 1300 групп, это может быть не самый удобный вариант. Гораздо удобнее поставить курсор в поле для ввода и начать вводить название направления, института или ID группы:
-
Как найти ID группы: найдите ссылку с расписанием вашей группы на сайте Герцена. Она будет иметь вид:
https://guide.herzen.spb.ru/static/schedule_dates.php?id_group=12460
. Пятизначное число в конце - ID вашей группы. -
Номер подгруппы. После выбора вашей группы из списка, система сама определит число подгрупп в вашей учебной группе и предложит выбрать: Если система определит, что в вашей ученой группе нет подгрупп (1 единственная подгруппа), выбрать подгруппу предложено не будет.
-
После ввода данных нажмите на кнопку "Загрузить". Начнется загрузка вашего файла. Примечание: если файл уже был сгенерирован кем-то до вас — загрузка начнется сразу, если файл генерируется впервые, то этот процесс может занять до 40 секунд. Не закрывайте страницу. Причина в медленном сайте Герцена, загрузка страницы с расписанием обычно занимает порядка 30-40 секунд.
-
Скачанный ics файл импортируйте в свой любимый календарь. Будут созданы события для каждого занятия, указанного в расписании. В поле "место" будет указана аудитория, в описании также будет указано место проведения занятия (не во всех календарях есть поле "место"). Помимо места в описании события будут: имя преподавателя, ссылка на курс предмета в Moodle (если эти данные были указаны в расписании).
Сервер может быть развернут в считанные минуты благодаря Docker. Пример для систем на базе Debian:
-
Обновить установленные пакеты:
sudo apt update && sudo apt upgrade -y
-
Установить Git:
sudo apt install -y git
-
Установить Docker: Инструкция
-
Скачать репозиторий с GitHub и перейти в директорию с ним:
git clone https://github.com/arseniiarsenii/herzen-schedule-to-ics.git && cd herzen-schedule-to-ics
-
Развернуть сервер в 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.