Skip to content

Latest commit

 

History

History
executable file
·
90 lines (62 loc) · 5.77 KB

README.md

File metadata and controls

executable file
·
90 lines (62 loc) · 5.77 KB

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.