Skip to content

Интеграция расписания МТУСИ с календарями - Python приложение для синхронизации расписания занятий МТУСИ с Google и Mac календарями. Возможности: автоматический парсинг расписания, обновления в реальном времени, умное разрешение конфликтов. Построено на Python 3.9+, Playwright, Google Calendar API, асинхронной архитектуре и строгой типизации.

License

Notifications You must be signed in to change notification settings

TheFoxKD/CalendarMTUSI

Repository files navigation

MTUCI Schedule Sync 📅

Автоматическая синхронизация расписания МТУСИ с календарными системами (Google Calendar, Mac Calendar). Проект позволяет автоматически получать актуальное расписание из личного кабинета МТУСИ и создавать соответствующие события в календаре.

Возможности 🚀

  • Автоматическая авторизация в личном кабинете МТУСИ
  • Извлечение актуального расписания занятий
  • Синхронизация с Google Calendar
  • Поддержка Mac Calendar
  • Умное определение изменений в расписании
  • Типизированный код с поддержкой статического анализа
  • Подробное логирование процесса синхронизации
  • Обработка ошибок и автоматические повторные попытки

Требования 📋

Системные требования

  • Python 3.7+
  • Playwright
  • Google Chrome или Chromium
  • Доступ к интернету
  • Учетная запись в личном кабинете МТУСИ
  • Проект в Google Cloud с включенным Calendar API

Зависимости Python

  • playwright
  • pydantic
  • structlog
  • google-auth-oauthlib
  • google-auth-httplib2
  • google-api-python-client
  • и другие (см. requirements.txt)

Установка 🛠️

  1. Клонируйте репозиторий:
git clone https://github.com/TheFoxKD/CalendarMTUSI.git
cd CalendarMTUSI
  1. Создайте и активируйте виртуальное окружение:
python -m venv venv
source venv/bin/activate  # Linux/macOS
venv\Scripts\activate     # Windows
  1. Установите зависимости:
pip install -r requirements.txt
  1. Установите Playwright и браузеры:
playwright install
playwright install chrome
  1. Настройте переменные окружения:
cp .env.example .env
# Отредактируйте .env файл, добавив свои учетные данные

Настройка Google Calendar API 🔑

  1. Перейдите в Google Cloud Console
  2. Создайте новый проект или выберите существующий
  3. Включите Google Calendar API для проекта
  4. Создайте учетные данные (OAuth 2.0)
  5. Скачайте credentials.json и поместите в корневую директорию проекта

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

  1. Активируйте виртуальное окружение:
source venv/bin/activate  # Linux/macOS
venv\Scripts\activate     # Windows
  1. Запустите синхронизацию:
python -m src.main

При первом запуске потребуется авторизация в Google Calendar. Следуйте инструкциям в консоли.

Разработка 👨‍💻

Установка зависимостей для разработки

pip install -r requirements-dev.txt

Настройка pre-commit hooks

pre-commit install

Запуск тестов

pytest

Проверка типов

mypy src

Линтинг

ruff check src

Структура проекта 📁

.
├── src/
│   ├── core/          # Основные компоненты
│   ├── models/        # Модели данных
│   ├── my_calendar/   # Интеграция с календарями
│   └── scraping/      # Парсинг расписания
├── tests/             # Тесты
├── .env.example       # Пример переменных окружения
├── requirements.txt   # Основные зависимости
└── requirements-dev.txt  # Зависимости для разработки

Troubleshooting 🔧

Проблемы с Playwright

Если возникают проблемы с запуском браузера:

  1. Переустановите браузеры:
playwright install --force
  1. Проверьте системные зависимости:
playwright install-deps

Ошибки авторизации Google Calendar

  1. Удалите файл token.json
  2. Перезапустите приложение
  3. Пройдите процесс авторизации заново

Roadmap 🗺️

Версия 1.1

  • Добавить поддержку загрузки полного расписания на семестр
  • Оптимизировать время выполнения синхронизации
  • Улучшить обработку ошибок сети
  • Добавить тесты для основных компонентов

Версия 1.2

  • Реализовать кэширование данных для ускорения работы
  • Улучшить логирование и мониторинг
  • Добавить метрики производительности
  • Исправить найденные баги в процессе парсинга

Версия 1.3

  • Повысить безопасность приложения
    • Добавить шифрование чувствительных данных
    • Улучшить защиту токенов доступа
    • Внедрить проверку сертификатов
  • Обеспечить 100% покрытие типами (mypy)
  • Настроить CI/CD пайплайн

Версия 1.4

  • Оптимизировать использование памяти
  • Добавить параллельную обработку данных
  • Улучшить UI/UX процесса авторизации
  • Добавить поддержку уведомлений об ошибках

Долгосрочные планы

  • Портирование на другие вузы
  • Создание веб-интерфейса для управления
  • Разработка мобильного приложения
  • Интеграция с другими календарными системами

Лицензия 📄

Проект распространяется под MIT License. Полный текст лицензии доступен в файле LICENSE.

Вклад в проект 🤝

Мы приветствуем ваш вклад в проект! Пожалуйста:

  1. Создайте fork репозитория
  2. Создайте ветку для новой функциональности
  3. Внесите изменения
  4. Отправьте pull request

Убедитесь, что ваш код:

  • Проходит все тесты
  • Имеет аннотации типов
  • Отформатирован согласно стандартам проекта
  • Имеет необходимую документацию

Контакты 📬

Если у вас возникли вопросы или предложения, пожалуйста:

  1. Создайте issue в репозитории
  2. Напишите на email: krishtopadenis@gmail.com

About

Интеграция расписания МТУСИ с календарями - Python приложение для синхронизации расписания занятий МТУСИ с Google и Mac календарями. Возможности: автоматический парсинг расписания, обновления в реальном времени, умное разрешение конфликтов. Построено на Python 3.9+, Playwright, Google Calendar API, асинхронной архитектуре и строгой типизации.

Topics

Resources

License

Stars

Watchers

Forks

Languages