
CU - это инструмент командной строки для взаимодействия с API Central University. Утилита позволяет получать информацию о курсах, управлять аутентификацией и синхронизировать данные.
Установка
Одной командой (macOS, Linux: Ubuntu/Fedora, amd64/arm64)
curl -fsSL https://raw.githubusercontent.com/EgorTarasov/cu/main/install.sh | sh
Скрипт скачивает последний релиз с GitHub, проверяет sha256, ставит бинарь в
~/.local/bin/cu и снимает quarantine-атрибут на macOS. Опции:
# Конкретная версия
curl -fsSL https://raw.githubusercontent.com/EgorTarasov/cu/main/install.sh | CU_VERSION=v0.1.5 sh
# Системная установка
curl -fsSL https://raw.githubusercontent.com/EgorTarasov/cu/main/install.sh | CU_INSTALL_DIR=/usr/local/bin sh
Бинарь вручную
Скачайте подходящий архив со страницы Releases,
сверьте sha256 по checksums.txt, распакуйте cu куда-то в PATH (~/.local/bin или /usr/local/bin),
сделайте исполняемым.
Через go install
Если в системе уже есть Go ≥ 1.26:
go install github.com/EgorTarasov/cu/cmd/cu@latest
Бинарь окажется в $(go env GOPATH)/bin/cu.
Из исходного кода
git clone https://github.com/EgorTarasov/cu.git
cd cu
make install # собирает в bin/cu и копирует в $GOPATH/bin
# или просто:
make build # bin/cu
Проверка
cu --version
cu --help
Аутентификация
Для работы утилиты необходимо пройти аутентификацию. Есть два способа:
Способ 1 — Авторизация через браузер (рекомендуется)
cu login
Команда откроет Chrome, перенаправит на страницу входа Keycloak. После успешного логина cookie будет автоматически сохранён в ~/.cu-cli/cookie и подхвачен всеми последующими командами.
Если cookie истёк — просто выполните cu login ещё раз.
Дополнительные флаги:
| Флаг |
По умолчанию |
Описание |
--timeout |
5m |
Таймаут ожидания завершения входа |
Требование: необходим установленный Google Chrome или Chromium. Если Chrome установлен в нестандартном месте, укажите путь через переменную CHROME_PATH.
Способ 2 — Ручная установка cookie
- Откройте браузер и войдите в Central University
- Откройте Developer Tools (F12) -> вкладка Network
- Обновите страницу и найдите любой запрос к API
- Скопируйте значение
bff.cookie из заголовков
export CU_BFF_COOKIE="ваше-значение-cookie"
Переменная окружения CU_BFF_COOKIE имеет приоритет над сохранённым файлом.
Команды
Курс можно указать по ID (901) или по названию (go, sql, алгоритмы) — поиск регистронезависимый.
Дополнительные команды fetch
fetch помогает получить данные напрямую из API:
cu fetch student — профиль текущего студента
cu fetch course-summary <course-id> — краткая информация о курсе
cu fetch theme <theme-id> — краткая информация о теме
cu fetch longread <longread-id> — краткая информация о лонгриде
Обновление MCP-сервера
После make install запущенные хосты (Claude Code, IDE) продолжают держать
старый процесс — новые тулы и фиксы не подхватятся. После переустановки
перезапустите сервер в хосте:
claude mcp restart cu # или /mcp reconnect в Claude Code
Быстрый пример
# Что горит?
cu deadlines
# Оценки по Go
cu grades go
# Скачать все лекции и семинары
cu materials алгоритмы --path ./downloads
# Подробности по заданию
cu task 1536681
Переменные окружения
| Переменная |
Описание |
Обязательная |
CU_BFF_COOKIE |
Cookie аутентификации (приоритет над файлом) |
Нет |
CHROME_PATH |
Путь к Chrome/Chromium (если не стандартный) |
Нет |
Устранение неполадок
Cookie истёк (403 Forbidden)
Cookie validation failed: bff.cookie is invalid or expired: 403
Решение: Выполните cu login для получения нового cookie.
Аутентификация не найдена
No authentication found.
Option 1 — login via browser:
cu login
Option 2 — set cookie manually:
export CU_BFF_COOKIE='your-cookie-value-here'
Решение: Выполните cu login или установите переменную окружения CU_BFF_COOKIE.
Chrome не найден
Chrome not found. Install Google Chrome or set CHROME_PATH environment variable
Решение: Установите Google Chrome или укажите путь через CHROME_PATH.
Ошибки сети
Убедитесь, что у вас есть доступ к интернету и серверы Central University доступны.
Тестирование
# Запуск всех тестов
go test ./...
# Запуск тестов с подробным выводом
go test -v ./internal/cu
Разработка
Структура проекта
.
├── .github/workflows/ # GitHub Actions для CI/CD
├── cmd/cu/ # Основное приложение CLI
├── internal/
│ ├── cli/ # Команды CLI (Cobra)
│ └── cu/ # Клиент API Central University
├── integration_tests/ # Интеграционные тесты
├── build/ # Собранные бинарные файлы
├── Makefile # Задачи для разработки
├── go.mod
├── go.sum
└── README.md
Разработка с Makefile
# Показать все доступные команды
make help
# Запустить тесты
make test
# Собрать для текущей платформы
make build
# Собрать для всех платформ
make build-all
# Запустить приложение
make run ARGS='fetch courses'
Ручная сборка
# Сборка для текущей платформы
go build -o cu ./cmd/cu
# Кросс-компиляция
GOOS=windows GOARCH=amd64 go build -o cu.exe ./cmd/cu
GOOS=linux GOARCH=amd64 go build -o cu-linux ./cmd/cu
GOOS=darwin GOARCH=amd64 go build -o cu-macos ./cmd/cu
CI/CD
Проект использует GitHub Actions:
- test.yml — тесты на Go 1.25, покрытие кода,
go vet
- build.yml — сборка для 6 платформ, контрольные суммы SHA256, релизы по тегам
- pr.yml — форматирование, тесты, Gosec, golangci-lint
Вклад в проект
- Форкните репозиторий
- Создайте ветку для фичи (
git checkout -b feature/amazing-feature)
- Сделайте коммит изменений (
git commit -m 'Add amazing feature')
- Запушьте ветку (
git push origin feature/amazing-feature)
- Откройте Pull Request
Лицензия
Этот проект распространяется под лицензией MIT. См. файл LICENSE для деталей.
Roadmap
- Авторизация через браузер (chromedp)
- Получение списка курсов
- Скачивание PDF-материалов
- Просмотр дедлайнов
- Просмотр оценок и ведомости
- Поиск курса по названию
- Скачивание лонгридов с GitLab
- Интерактивный режим
- Уведомления о приближающихся дедлайнах