Автоматическая синхронизация расписания МТУСИ с календарными системами (Google Calendar, Mac Calendar). Проект позволяет автоматически получать актуальное расписание из личного кабинета МТУСИ и создавать соответствующие события в календаре.
- Автоматическая авторизация в личном кабинете МТУСИ
- Извлечение актуального расписания занятий
- Синхронизация с Google Calendar
- Поддержка Mac Calendar
- Умное определение изменений в расписании
- Типизированный код с поддержкой статического анализа
- Подробное логирование процесса синхронизации
- Обработка ошибок и автоматические повторные попытки
- Python 3.7+
- Playwright
- Google Chrome или Chromium
- Доступ к интернету
- Учетная запись в личном кабинете МТУСИ
- Проект в Google Cloud с включенным Calendar API
- playwright
- pydantic
- structlog
- google-auth-oauthlib
- google-auth-httplib2
- google-api-python-client
- и другие (см. requirements.txt)
- Клонируйте репозиторий:
git clone https://github.com/TheFoxKD/CalendarMTUSI.git
cd CalendarMTUSI
- Создайте и активируйте виртуальное окружение:
python -m venv venv
source venv/bin/activate # Linux/macOS
venv\Scripts\activate # Windows
- Установите зависимости:
pip install -r requirements.txt
- Установите Playwright и браузеры:
playwright install
playwright install chrome
- Настройте переменные окружения:
cp .env.example .env
# Отредактируйте .env файл, добавив свои учетные данные
- Перейдите в Google Cloud Console
- Создайте новый проект или выберите существующий
- Включите Google Calendar API для проекта
- Создайте учетные данные (OAuth 2.0)
- Скачайте
credentials.json
и поместите в корневую директорию проекта
- Активируйте виртуальное окружение:
source venv/bin/activate # Linux/macOS
venv\Scripts\activate # Windows
- Запустите синхронизацию:
python -m src.main
При первом запуске потребуется авторизация в Google Calendar. Следуйте инструкциям в консоли.
pip install -r requirements-dev.txt
pre-commit install
pytest
mypy src
ruff check src
.
├── src/
│ ├── core/ # Основные компоненты
│ ├── models/ # Модели данных
│ ├── my_calendar/ # Интеграция с календарями
│ └── scraping/ # Парсинг расписания
├── tests/ # Тесты
├── .env.example # Пример переменных окружения
├── requirements.txt # Основные зависимости
└── requirements-dev.txt # Зависимости для разработки
Если возникают проблемы с запуском браузера:
- Переустановите браузеры:
playwright install --force
- Проверьте системные зависимости:
playwright install-deps
- Удалите файл
token.json
- Перезапустите приложение
- Пройдите процесс авторизации заново
- Добавить поддержку загрузки полного расписания на семестр
- Оптимизировать время выполнения синхронизации
- Улучшить обработку ошибок сети
- Добавить тесты для основных компонентов
- Реализовать кэширование данных для ускорения работы
- Улучшить логирование и мониторинг
- Добавить метрики производительности
- Исправить найденные баги в процессе парсинга
- Повысить безопасность приложения
- Добавить шифрование чувствительных данных
- Улучшить защиту токенов доступа
- Внедрить проверку сертификатов
- Обеспечить 100% покрытие типами (mypy)
- Настроить CI/CD пайплайн
- Оптимизировать использование памяти
- Добавить параллельную обработку данных
- Улучшить UI/UX процесса авторизации
- Добавить поддержку уведомлений об ошибках
- Портирование на другие вузы
- Создание веб-интерфейса для управления
- Разработка мобильного приложения
- Интеграция с другими календарными системами
Проект распространяется под MIT License. Полный текст лицензии доступен в файле LICENSE.
Мы приветствуем ваш вклад в проект! Пожалуйста:
- Создайте fork репозитория
- Создайте ветку для новой функциональности
- Внесите изменения
- Отправьте pull request
Убедитесь, что ваш код:
- Проходит все тесты
- Имеет аннотации типов
- Отформатирован согласно стандартам проекта
- Имеет необходимую документацию
Если у вас возникли вопросы или предложения, пожалуйста:
- Создайте issue в репозитории
- Напишите на email: krishtopadenis@gmail.com