// the find
skyzh/canvas_grab
🌐 One-click script to synchronize files from Canvas LMS.
canvas_grab downloads all files from a Canvas LMS instance to a local directory, syncing only what's changed on each run. It's aimed at students who want an offline copy of course materials without manually clicking through Canvas's clunky interface.
The snapshot diffing approach — comparing a Canvas API snapshot against an on-disk snapshot — is the right design for an incremental sync tool and avoids re-downloading unchanged files. The course and file filtering system is genuinely composable, with per-course overrides sitting on top of global defaults. There's a Qt GUI for users who don't want a terminal, which is more effort than most similar scripts bother with. Resumable downloads mean you can kill it mid-run and it picks up where it stopped.
The project is explicitly unmaintained — the author no longer has Canvas access and is looking for someone to take it over, which is a real adoption risk for anything depending on the Canvas API's current behavior. The GUI (Qt/QML) adds a heavy dependency for what is fundamentally a download script, and the QML files checked in alongside `.pyproject.user` files suggests the GUI side was never properly packaged. Windows setup requires admin PowerShell, ExecutionPolicy changes, and a registry edit for long paths — that's a lot of friction for a student audience. No tests anywhere in the repo.