Десктопное приложение для скачивания видеоуроков с платформы GetCourse
- 🖥️ GUI — приложение на Flet с тёмной темой
- 📋 Просмотр курсов — удобный список с раскрывающимися карточками и поиском
- 🎯 Выборочное скачивание — отмечай только нужные уроки через чекбоксы
- 🎞️ Выбор качества — 360p / 480p / 720p / 1080p / Auto (автоматический выбор максимального качества)
- 🔐 Авторизация в браузере — проверка сессии, при необходимости — вход через Firefox
- 🍪 Persistent-сессия — данные входа сохраняются в
session_data/для повторного использования - ⚡ Асинхронная загрузка — сегменты видео скачиваются конкурентно (до 10 одновременно)
- 📁 Конвертация FFmpeg — склейка
.tsсегментов в.mp4 - 📂 Сохранение структуры — курсы → папки, видео в соответствующих директориях
- 🔍 Поиск по урокам — фильтрация списка в реальном времени
- 🚫 Удаление курсов — кнопка для сброса и загрузки нового списка
Стартовый экран — ввод ссылки на плейлист
Экран курсов — карточки с чекбоксами, поиск, настройки качества и пути сохранения
Оверлей загрузки — реаль-тайм лог скачивания сегментов
Окно авторизации — браузер Firefox для входа в аккаунт
| Компонент | Версия |
|---|---|
| ОС | Windows 10 / 11 |
| Python | 3.12 или выше |
| FFmpeg | Любая (должен быть в PATH) |
| Браузер | Firefox (устанавливается автоматически через Playwright) |
git clone https://github.com/byMarken/GetCourseVideoDownloader.git
cd GetCourseVideoDownloaderpython -m venv .venv
.venv\Scripts\activatepip install -r req.txtplaywright install firefoxFFmpeg нужен для конвертации .ts сегментов в .mp4. Проверь установку:
ffmpeg -versionЕсли не установлен — проще всего через winget:
winget install --id Gyan.FFmpeg -eИли скачай вручную с ffmpeg.org, распакуй и добавь bin в PATH.
python -m app.main-
Загрузи курсы 🏁
- Вставь ссылку на страницу плейлиста GetCourse (например,
https://school.beilbei.ru/teach/control/stream/view/id/123456789) - Нажми «Загрузить курсы» или
Enter
- Вставь ссылку на страницу плейлиста GetCourse (например,
-
Авторизация (если требуется) 🔐
- Автоматически откроется Firefox
- Войди в аккаунт GetCourse
- Нажми «Продолжить» в приложении
- Сессия сохранится — в следующий раз авторизация не понадобится
-
Выбери уроки ☑️
- Откроется экран со списком курсов и уроков
- Используй поиск для фильтрации
- Отмечай нужные уроки чекбоксами (или «Выбрать всё»/«Убрать всё»)
-
Настрой параметры ⚙️
- Качество: Auto / 1080p / 720p / 480p / 360p
- Папка сохранения: нажми на иконку папки и выбери директорию
-
Скачай 📥
- Нажми «Скачать выбранное»
- Наблюдай за процессом в реальном времени
- После завершения закрой оверлей
GetCourseVideoDownloader/
├── app/
│ ├── main.py # 🚀 Точка входа (Flet-приложение)
│ ├── theme.py # 🎨 Тёмная тема: цвета, градиенты, тени, UI-компоненты
│ ├── data/
│ │ ├── courses.json # 📋 Распарсенные курсы и уроки (создаётся при парсинге)
│ │ └── settings.json # ⚙️ Сохранённый путь для скачивания
│ ├── screens/
│ │ ├── start_screen.py # 🏠 Стартовый экран (ввод ссылки, авторизация)
│ │ └── courses_screen.py # 📚 Экран курсов (список, поиск, скачивание)
│ ├── scripts/
│ │ └── parse_courses.py # 🔍 Парсинг курсов через Playwright
│ ├── services/
│ │ ├── givereq.py # ⬇️ Скачивание видео (Playwright + aiohttp + ffmpeg)
│ │ └── parser_service.py # 🔗 Мост между GUI и parse_courses.py
│ └── session_data/ # 🍪 Сессия Firefox (persistent context)
├── utils_console.py # 🛠 Утилита UTF-8 для консоли
├── req.txt # 📦 Зависимости
└── README.md # 📖 Этот файл
- Парсинг — Playwright открывает Firefox (скрытый), заходит по ссылке плейлиста, собирает все курсы и ссылки на уроки → сохраняет в
courses.json - Авторизация — используется Firefox persistent context (
app/session_data/) — куки и localStorage сохраняются между запусками - Загрузка — для каждого урока открывается страница, перехватывается ответ с m3u8 master-плейлистом, парсятся доступные качества
- Сегменты — из выбранного качества читаются
.ts/.binсегменты и скачиваются асинхронно (aiohttp + asyncio.Semaphore) - Конвертация — все сегменты склеиваются в
.ts, затем FFmpeg конвертирует в.mp4(codec copy, без пережатия)
У каждого автора курсов на GetCourse свой адрес школы. Он может быть как на собственном домене, так и на поддомене getcourse:
https://school.beilbei.ru/teach/control/stream/view/id/123456789 ← пример
https://ваша-школа.getcourse.ru/teach/control/stream/view/id/123456789
https://уроки.ваш-домен.рф/teach/control/stream/view/id/123456789
beilbei.ru — это просто домен конкретного автора курсов. У тебя будет свой адрес, который тебе выдала школа/автор.
| Пакет | Назначение |
|---|---|
| flet (0.85) | UI-фреймворк (Flutter-based) |
| playwright (1.61) | Управление браузером Firefox |
| aiohttp (3.14) | Асинхронная загрузка сегментов |
| ffmpeg (отдельно) | Конвертация TS → MP4 |
Полный список — в req.txt.
Проект распространяется под лицензией MIT. Подробнее — в файле LICENSE.
Убедитесь, что скачивание не нарушает условия использования платформы GetCourse.