Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/thefoxkd/calendarmtusi

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

async-python automation calendar-integration clean-architecture education-tools google-calendar-api mtuci oauth2 playwright pydantic python schedule-sync testing type-hints web-scraping

Last synced: 3 days ago
JSON representation

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

Awesome Lists containing this project

README

        

# 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. Клонируйте репозиторий:

```bash
git clone https://github.com/TheFoxKD/CalendarMTUSI.git
cd CalendarMTUSI
```

2. Создайте и активируйте виртуальное окружение:

```bash
python -m venv venv
source venv/bin/activate # Linux/macOS
venv\Scripts\activate # Windows
```

3. Установите зависимости:

```bash
pip install -r requirements.txt
```

4. Установите Playwright и браузеры:

```bash
playwright install
playwright install chrome
```

5. Настройте переменные окружения:

```bash
cp .env.example .env
# Отредактируйте .env файл, добавив свои учетные данные
```

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

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

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

1. Активируйте виртуальное окружение:

```bash
source venv/bin/activate # Linux/macOS
venv\Scripts\activate # Windows
```

2. Запустите синхронизацию:

```bash
python -m src.main
```

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

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

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

```bash
pip install -r requirements-dev.txt
```

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

```bash
pre-commit install
```

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

```bash
pytest
```

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

```bash
mypy src
```

### Линтинг

```bash
ruff check src
```

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

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

## Troubleshooting 🔧

### Проблемы с Playwright

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

1. Переустановите браузеры:

```bash
playwright install --force
```

2. Проверьте системные зависимости:

```bash
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). Полный текст лицензии доступен в файле [LICENSE](LICENSE).

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

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

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

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

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

## Контакты 📬

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

1. Создайте issue в репозитории
2. Напишите на email: [email protected]