2026-02-13 18:49:29 +01:00
2026-02-13 20:42:53 +01:00
2026-02-13 18:49:29 +01:00
2026-02-13 18:49:29 +01:00
2026-02-13 18:49:29 +01:00
2026-02-13 18:51:07 +01:00

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

  1. Run the archiver:

    ./canvasarchiver
    
  2. 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
  3. Enter your Course ID when prompted

  4. The tool will download:

    • Regular course files (to Course Files/)
    • Module content (to Modules/)
    • Panopto recordings (to Recordings/)

Configuration

The following constants can be modified in internal/config/config.go:

  • BaseURL: Canvas instance URL
  • ClientID: OAuth client ID
  • ClientSecret: OAuth client secret
  • PanoptoID: 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.

Description
No description provided
Readme 43 KiB
Languages
Go 97.3%
Makefile 2.7%