How markpekun/getcourse-downloader works
GetCourse Downloader is a Windows desktop app for discovering accessible courses and downloading selected lessons as organized MP4 files. The main flow is URL entry and course discovery, lesson/quality selection, then download with progress and completion feedback. The README documents Flet/CLI entry points and ports-and-adapters architecture; source excerpts and the SOURCE INDEX support several internal calls, but not every adapter wiring detail, so uncertain relationships are omitted or marked dashed.
Main entry points: downloader.py GetCourse downloader · view.py Lesson selection screen · download_lessons.py Download lessons · bootstrap.py Dependency assembly
Components 21
User interface
- Flet desktop app
src/getcourse_downloader/presentation/flet/app.py - Course discovery screen
src/getcourse_downloader/presentation/flet/screens/start - Lesson selection screen
src/getcourse_downloader/presentation/flet/screens/courses/view.py - CLI interface
src/getcourse_downloader/presentation/cli
Application and domain
- Discover courses
src/getcourse_downloader/application/use_cases/discover_courses.py - Download lessons
src/getcourse_downloader/application/use_cases/download_lessons.py - Course and download models
src/getcourse_downloader/domain/models.py - Download events
src/getcourse_downloader/domain/events.py - Dependency assembly
src/getcourse_downloader/bootstrap.py
GetCourse integration
- Playwright browser and profile
src/getcourse_downloader/infrastructure/browser - GetCourse discovery
src/getcourse_downloader/infrastructure/getcourse/discovery.py - Lesson and player extraction
src/getcourse_downloader/infrastructure/getcourse - GetCourse downloader
src/getcourse_downloader/infrastructure/getcourse/downloader.py
Media and persistence
- HLS fetch and decryption
src/getcourse_downloader/infrastructure/media/hls.py - MP4 muxing
src/getcourse_downloader/infrastructure/media/ffmpeg.py - Course and settings storage
src/getcourse_downloader/infrastructure/storage/json_repositories.py - Download catalog
src/getcourse_downloader/infrastructure/storage/download_catalog.py - Download diagnostics
src/getcourse_downloader/infrastructure/diagnostics/reports.py
Other components
- User
- GetCourse website
- Local files
Connections 26
- User → Flet desktop app: uses
README.md - Flet desktop app → Course discovery screen: shows
src/getcourse_downloader/presentation/flet/app.py - Flet desktop app → Lesson selection screen: shows
src/getcourse_downloader/presentation/flet/app.py - Course discovery screen → Discover courses: invokes
src/getcourse_downloader/presentation/flet/screens/start/controller.py - Lesson selection screen → Download lessons: invokes
- Discover courses → Course and download models: uses models
src/getcourse_downloader/application/use_cases/discover_courses.py - Download lessons → Course and download models: uses models
src/getcourse_downloader/application/use_cases/download_lessons.py - Dependency assembly → Discover courses: assembles
src/getcourse_downloader/bootstrap.py - Dependency assembly → Download lessons: assembles
src/getcourse_downloader/bootstrap.py - Dependency assembly → GetCourse discovery: assembles
src/getcourse_downloader/bootstrap.py - Dependency assembly → Playwright browser and profile: assembles
src/getcourse_downloader/bootstrap.py - Course discovery screen → Lesson selection screen: returns discovered courses
README.md - GetCourse discovery → GetCourse website: reads courses
- Playwright browser and profile → GetCourse website: authenticates
README.md - GetCourse downloader → Lesson and player extraction: extracts lesson video
src/getcourse_downloader/infrastructure/getcourse/downloader.py - GetCourse downloader → Playwright browser and profile: uses browser
src/getcourse_downloader/infrastructure/getcourse/downloader.py - GetCourse downloader → HLS fetch and decryption: downloads streams
src/getcourse_downloader/infrastructure/getcourse/downloader.py - GetCourse downloader → Download catalog: checks existing downloads
src/getcourse_downloader/infrastructure/getcourse/downloader.py - GetCourse downloader → Local files: writes lesson files
README.md - HLS fetch and decryption → MP4 muxing: muxes media
src/getcourse_downloader/infrastructure/media/hls.py - MP4 muxing → Local files: writes MP4
README.md - Course and settings storage → Local files: persists settings
- Lesson selection screen → Download events: renders progress
src/getcourse_downloader/presentation/flet/screens/courses/view.py - Download lessons → Download events: emits progress
- Lesson selection screen → Download diagnostics: loads reports
- CLI interface → Download lessons: invokes worker flow
src/getcourse_downloader/presentation/cli/worker.py