Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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, асинхронной архитектуре и строгой типизации.
- Host: GitHub
- URL: https://github.com/thefoxkd/calendarmtusi
- Owner: TheFoxKD
- License: other
- Created: 2024-11-05T18:47:39.000Z (12 days ago)
- Default Branch: main
- Last Pushed: 2024-11-13T10:32:10.000Z (4 days ago)
- Last Synced: 2024-11-13T11:30:39.174Z (4 days ago)
- Topics: async-python, automation, calendar-integration, clean-architecture, education-tools, google-calendar-api, mtuci, oauth2, playwright, pydantic, python, schedule-sync, testing, type-hints, web-scraping
- Language: Python
- Homepage:
- Size: 36.1 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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]