Skip to content

falbue/timetable

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Расписание МГТУ -> Google Calendar

Скрипт автоматически выгружает расписание группы с сайта МГТУ и синхронизирует его в Google Calendar для одного или нескольких пользователей

Что делает

  • Парсит расписание по коду группы с https://timetable.magtu.ru
  • Учитывает четность недели
  • Создает или обновляет пары в Google Calendar
  • Удаляет устаревшие события (которых больше нет в актуальном расписании)
  • Пропускает дни, которые отмечены как государственные праздники в календаре РФ
  • Поддерживает индивидуальные цвета типов занятий для каждого пользователя

Структура

  • parser.py - парсер расписания
  • google_sync.py - синхронизация событий в Google Calendar
  • utils/config.py - загрузка конфигурации из .env
  • users.json - список пользователей и их параметров
  • credentials.json - ключ Service Account Google (не публиковать)

Требования

  • Python 3.10+
  • Google Cloud проект с включенным Google Calendar API
  • Service Account с JSON-ключом
  • Доступ Service Account к календарям пользователей

Установка

  1. Клонируйте репозиторий и перейдите в папку проекта
  2. Создайте виртуальное окружение
  3. Установите зависимости
pip install -r requirements.txt

Настройка Google

  1. В Google Cloud создайте Service Account.
  2. Включите Google Calendar API.
  3. Скачайте ключ в JSON и положите его в корень проекта как credentials.json.
  4. Для каждого календаря, куда нужно писать события, дайте доступ сервисному аккаунту (с правом изменения событий).

Пример сервисного аккаунта:

calendar-bot@magtu-timetable.iam.gserviceaccount.com

Настройка .env

При первом запуске проект автоматически создаст .env, если файла нет.

Стандартные значения:

USERS_FILE=users.json
CRED_PATH=credentials.json

Формат users.json

{
	"user@example.com": {
		"group": "АВб-25-2_2",
		"colors": {
			"Лекция": "10",
			"Практика": "6",
			"Лабораторная": "4"
		}
	}
}

Где ключ верхнего уровня (user@example.com) - это calendarId целевого календаря.

Цвета Google Calendar

Поддерживаемые значения colorId:

  • 1 - Лаванда (Фиолетовый)
  • 2 - Шалфей (Серый)
  • 3 - Виноград (Фиолетовый)
  • 4 - Фламинго (Красный)
  • 5 - Банан (Желтый)
  • 6 - Мандарин (Оранжевый)
  • 7 - Павлин (Синий)
  • 8 - Графит (Черный)
  • 9 - Черника (Синий)
  • 10 - Базилик (Зеленый)
  • 11 - Помидор (Красный)

Может есть больше цветов, но эти точно работают. Рекомендуется использовать разные цвета для разных типов занятий (лекция, практика, лаба) для лучшей визуальной организации

Запуск

Одноразовая синхронизация для всех пользователей из users.json:

python google_sync.py

Как работает обновление

Сценарий синхронизирует текущую и следующую учебную неделю, используя уникальный ключ занятия.

Если занятие уже есть в календаре - оно обновляется. Если занятия нет - создается. Если занятие удалено из расписания - удаляется из календаря.

Частые проблемы

  1. 403 Forbidden или 404 Not Found при записи в календарь

    • Проверьте, что календарь открыт для сервисного аккаунта.
  2. Пустое расписание

    • Проверьте корректность кода группы в users.json.
  3. Ошибка чтения .env

    • Убедитесь, что файл существует и содержит корректные пути.

Безопасность

  • Не публикуйте credentials.json в открытый доступ.
  • Добавьте секреты в .gitignore (если еще не добавлены).

About

Синхронизация расписания МГТУ с Google календарём

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors