Reviewed-on: #5
Canvas Archiver
A command-line tool to archive Canvas LMS course content, including files, modules, and Panopto video recordings.
Prerequisites
- Go 1.21 or higher
- yt-dlp installed and in PATH
Installation
git clone git.directme.in/Joren/CanvasArchiver
cd CanvasArchiver
go build -o canvasarchiver ./cmd/canvasarchiver
Usage
-
Run the archiver:
./canvasarchiverOr for files-only mode (all files flat, no videos):
./canvasarchiver -foOr for videos-only mode (all Panopto videos flat, no files):
./canvasarchiver -vo -
On first run, you'll be prompted to authenticate:
- Visit the provided OAuth URL
- Authorize the application
- Copy the authorization code back to the terminal
-
Enter your Course ID when prompted (or use
-meto download all enrolled courses) -
The tool will download:
- Regular course files (to
Course Files/) - Module content (to
Modules/) - Panopto recordings (to
Recordings/)
In
-vomode, only videos are downloaded — all into the course root directory (no subdirectories). - Regular course files (to
Flags
| Flag | Description |
|---|---|
-fo |
Files only — download all files flat into one directory; skips videos and module structure |
-vo |
Videos only — scan recordings and all module video items, download everything flat into one directory; skips regular files |
-me |
Download all enrolled courses |
-n |
Prefix modules with order numbers [1], [2], etc. |
Configuration
The following constants can be modified in internal/config/config.go:
BaseURL: Canvas instance URLClientID: OAuth client IDClientSecret: OAuth client secretPanoptoID: Panopto external tool ID
Authentication
Credentials are stored in credentials.json after the first successful login. The refresh token is automatically used for subsequent runs.
Notes
- Files are organized to match Canvas structure
- SubHeaders in modules create nested folder structures
- Videos are downloaded with their original titles
- Existing files are skipped to avoid re-downloading
License
This project is for educational purposes. Ensure you have permission to download course content.