{"id":20312495,"url":"https://github.com/thefoxkd/calendarmtusi","last_synced_at":"2026-05-11T07:01:56.898Z","repository":{"id":262613518,"uuid":"883888052","full_name":"TheFoxKD/CalendarMTUSI","owner":"TheFoxKD","description":"Интеграция расписания МТУСИ с календарями - Python приложение для синхронизации расписания занятий МТУСИ с Google и Mac календарями. Возможности: автоматический парсинг расписания, обновления в реальном времени, умное разрешение конфликтов. Построено на Python 3.9+, Playwright, Google Calendar API, асинхронной архитектуре и строгой типизации.","archived":false,"fork":false,"pushed_at":"2024-12-17T07:17:01.000Z","size":40,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-14T12:25:11.916Z","etag":null,"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"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TheFoxKD.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-05T18:47:39.000Z","updated_at":"2024-12-17T07:17:05.000Z","dependencies_parsed_at":"2024-11-13T11:32:31.471Z","dependency_job_id":"d7520e8b-a480-467f-9181-370d6c289988","html_url":"https://github.com/TheFoxKD/CalendarMTUSI","commit_stats":null,"previous_names":["thefoxkd/calendarmtusi"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheFoxKD%2FCalendarMTUSI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheFoxKD%2FCalendarMTUSI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheFoxKD%2FCalendarMTUSI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheFoxKD%2FCalendarMTUSI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TheFoxKD","download_url":"https://codeload.github.com/TheFoxKD/CalendarMTUSI/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241811589,"owners_count":20024221,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["async-python","automation","calendar-integration","clean-architecture","education-tools","google-calendar-api","mtuci","oauth2","playwright","pydantic","python","schedule-sync","testing","type-hints","web-scraping"],"created_at":"2024-11-14T18:06:22.926Z","updated_at":"2026-05-11T07:01:56.847Z","avatar_url":"https://github.com/TheFoxKD.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MTUCI Schedule Sync 📅\n\nАвтоматическая синхронизация расписания МТУСИ с календарными системами (Google Calendar, Mac Calendar). Проект позволяет\nавтоматически получать актуальное расписание из личного кабинета МТУСИ и создавать соответствующие события в календаре.\n\n## Возможности 🚀\n\n- Автоматическая авторизация в личном кабинете МТУСИ\n- Извлечение актуального расписания занятий\n- Синхронизация с Google Calendar\n- Поддержка Mac Calendar\n- Умное определение изменений в расписании\n- Типизированный код с поддержкой статического анализа\n- Подробное логирование процесса синхронизации\n- Обработка ошибок и автоматические повторные попытки\n\n## Требования 📋\n\n### Системные требования\n\n- Python 3.7+\n- Playwright\n- Google Chrome или Chromium\n- Доступ к интернету\n- Учетная запись в личном кабинете МТУСИ\n- Проект в Google Cloud с включенным Calendar API\n\n### Зависимости Python\n\n- playwright\n- pydantic\n- structlog\n- google-auth-oauthlib\n- google-auth-httplib2\n- google-api-python-client\n- и другие (см. requirements.txt)\n\n## Установка 🛠️\n\n1. Клонируйте репозиторий:\n\n```bash\ngit clone https://github.com/TheFoxKD/CalendarMTUSI.git\ncd CalendarMTUSI\n```\n\n2. Создайте и активируйте виртуальное окружение:\n\n```bash\npython -m venv venv\nsource venv/bin/activate  # Linux/macOS\nvenv\\Scripts\\activate     # Windows\n```\n\n3. Установите зависимости:\n\n```bash\npip install -r requirements.txt\n```\n\n4. Установите Playwright и браузеры:\n\n```bash\nplaywright install\nplaywright install chrome\n```\n\n5. Настройте переменные окружения:\n\n```bash\ncp .env.example .env\n# Отредактируйте .env файл, добавив свои учетные данные\n```\n\n## Настройка Google Calendar API 🔑\n\n1. Перейдите в [Google Cloud Console](https://console.cloud.google.com/)\n2. Создайте новый проект или выберите существующий\n3. Включите Google Calendar API для проекта\n4. Создайте учетные данные (OAuth 2.0)\n5. Скачайте `credentials.json` и поместите в корневую директорию проекта\n\n## Использование 🎯\n\n1. Активируйте виртуальное окружение:\n\n```bash\nsource venv/bin/activate  # Linux/macOS\nvenv\\Scripts\\activate     # Windows\n```\n\n2. Запустите синхронизацию:\n\n```bash\npython -m src.main\n```\n\nПри первом запуске потребуется авторизация в Google Calendar. Следуйте инструкциям в консоли.\n\n## Разработка 👨‍💻\n\n### Установка зависимостей для разработки\n\n```bash\npip install -r requirements-dev.txt\n```\n\n### Настройка pre-commit hooks\n\n```bash\npre-commit install\n```\n\n### Запуск тестов\n\n```bash\npytest\n```\n\n### Проверка типов\n\n```bash\nmypy src\n```\n\n### Линтинг\n\n```bash\nruff check src\n```\n\n## Структура проекта 📁\n\n```\n.\n├── src/\n│   ├── core/          # Основные компоненты\n│   ├── models/        # Модели данных\n│   ├── my_calendar/   # Интеграция с календарями\n│   └── scraping/      # Парсинг расписания\n├── tests/             # Тесты\n├── .env.example       # Пример переменных окружения\n├── requirements.txt   # Основные зависимости\n└── requirements-dev.txt  # Зависимости для разработки\n```\n\n## Troubleshooting 🔧\n\n### Проблемы с Playwright\n\nЕсли возникают проблемы с запуском браузера:\n\n1. Переустановите браузеры:\n\n```bash\nplaywright install --force\n```\n\n2. Проверьте системные зависимости:\n\n```bash\nplaywright install-deps\n```\n\n### Ошибки авторизации Google Calendar\n\n1. Удалите файл `token.json`\n2. Перезапустите приложение\n3. Пройдите процесс авторизации заново\n\n## Roadmap 🗺️\n\n### Версия 1.1\n\n- [ ] Добавить поддержку загрузки полного расписания на семестр\n- [ ] Оптимизировать время выполнения синхронизации\n- [ ] Улучшить обработку ошибок сети\n- [ ] Добавить тесты для основных компонентов\n\n### Версия 1.2\n\n- [ ] Реализовать кэширование данных для ускорения работы\n- [ ] Улучшить логирование и мониторинг\n- [ ] Добавить метрики производительности\n- [ ] Исправить найденные баги в процессе парсинга\n\n### Версия 1.3\n\n- [ ] Повысить безопасность приложения\n    - [ ] Добавить шифрование чувствительных данных\n    - [ ] Улучшить защиту токенов доступа\n    - [ ] Внедрить проверку сертификатов\n- [ ] Обеспечить 100% покрытие типами (mypy)\n- [ ] Настроить CI/CD пайплайн\n\n### Версия 1.4\n\n- [ ] Оптимизировать использование памяти\n- [ ] Добавить параллельную обработку данных\n- [ ] Улучшить UI/UX процесса авторизации\n- [ ] Добавить поддержку уведомлений об ошибках\n\n### Долгосрочные планы\n\n- [ ] Портирование на другие вузы\n- [ ] Создание веб-интерфейса для управления\n- [ ] Разработка мобильного приложения\n- [ ] Интеграция с другими календарными системами\n\n## Лицензия 📄\n\nПроект распространяется под [MIT License](LICENSE). Полный текст лицензии доступен в файле [LICENSE](LICENSE).\n\n## Вклад в проект 🤝\n\nМы приветствуем ваш вклад в проект! Пожалуйста:\n\n1. Создайте fork репозитория\n2. Создайте ветку для новой функциональности\n3. Внесите изменения\n4. Отправьте pull request\n\nУбедитесь, что ваш код:\n\n- Проходит все тесты\n- Имеет аннотации типов\n- Отформатирован согласно стандартам проекта\n- Имеет необходимую документацию\n\n## Контакты 📬\n\nЕсли у вас возникли вопросы или предложения, пожалуйста:\n\n1. Создайте issue в репозитории\n2. Напишите на email: krishtopadenis@gmail.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthefoxkd%2Fcalendarmtusi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthefoxkd%2Fcalendarmtusi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthefoxkd%2Fcalendarmtusi/lists"}