• Stars
    star
    208
  • Rank 189,015 (Top 4 %)
  • Language
    Python
  • License
    MIT License
  • Created over 4 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

๐ŸŒ One-click script to synchronize files from Canvas LMS.

canvas-grab

Looking for Maintainers

As I no longer have access to Canvas systems, this project cannot be actively maintained by me. If you are interested in maintaining this project, please email me.

Grab all files on Canvas LMS to local directory.

Less is More. In canvas_grab v2, we focus on stability and ease of use. Now you don't have to tweak dozens of configurations. We have a very simple setup wizard to help you get started!

For legacy version, refer to legacy branch.

Getting Started

  1. Install Python
  2. Download canvas_grab source code. There are typically three ways of doing this.
  3. Run ./canvas_grab.sh (Linux, macOS) or .\canvas_grab.ps1 (Windows) in Terminal. Please refer to Build and Run from Source for more information.
  4. Get your API key at Canvas profile and you're ready to go!
  5. Please don't modify any file inside download folder (e.g take notes, add supplementary items). They will be overwritten upon each run.

You may interrupt the downloading process at any time. The program will automatically resume from where it stopped.

To upgrade, just replace canvas_grab with a more recent version.

If you have any questions, feel free to file an issue here.

Build and Run from Source

First of all, please install Python 3.8+, and download source code.

We have prepared a simple script to automatically install dependencies and run canvas_grab.

For macOS or Linux users, open a Terminal and run:

./canvas_grab.sh

For Windows users:

  1. Right-click Windows icon on taskbar, and select "Run Powershell (Administrator)".
  2. Run Set-ExecutionPolicy Unrestricted in Powershell.
  3. If some courses in Canvas LMS have very long module names that exceed Windows limits (which will causes "No such file" error when downloading), run the following command to enable long path support.
    Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem' -Name LongPathsEnabled -Type DWord -Value 1 
    
  4. Open canvas_grab source file in file browser, Shift + Right-click on blank area, and select Run Powershell here.
  5. Now you can start canvas_grab with a simple command:
    .\canvas_grab.ps1

Configure

The setup wizard will automatically create a configuration for you. You can change config.toml to fit your needs. If you need to re-configure, run ./configure.sh or ./configure.ps1.

Common Issues

  • Acquire API token Access Token can be obtained at "Account - Settings - New Access Token".
  • SJTU users ่ฏทๅœจๆญค้กต้ขๅ†…้€š่ฟ‡โ€œๅˆ›ๅปบๆ–ฐ่ฎฟ้—ฎ่ฎธๅฏ่ฏโ€ๆŒ‰้’ฎ็”Ÿๆˆ่ฎฟ้—ฎไปค็‰Œใ€‚
  • An error occurred You'll see "An error occurred when processing this course" if there's no file in a course.
  • File not available This file might have been included in an unpublished unit. canvas_grab cannot bypass restrictions.
  • No module named 'canvasapi' You haven't installed the dependencies. Follow steps in "build and run from source" or download prebuilt binaries.
  • Error when checking update It's normal if you don't have a stable connection to GitHub. You may regularly check updates by visiting this repo.
  • Reserved escape sequence used please use "/" as the path seperator instead of "\".
  • Duplicated files detected There're two files of same name in same folder. You should download it from Canvas yourself.

Screenshot

image

gui

Contributors

See Contributors list. @skyzh, @danyang685 are two core maintainers.

License

MIT

Which means that we do not shoulder any responsibilities for, included but not limited to:

  1. API key leaking
  2. Users upload copyright material from website to the Internet

More Repositories

1

mini-lsm

A tutorial of building an LSM-Tree storage engine in a week! (WIP)
Rust
1,157
star
2

type-exercise-in-rust

Learn Rust black magics by implementing an expression framework in database systems
Rust
1,154
star
3

chicv

Chi CV Template (For Typst)
304
star
4

core-os-riscv

๐Ÿ–ฅ๏ธ An xv6-like operating system on RISC-V with multi-core support. Documentation available online.
Rust
276
star
5

RISCV-Simulator

๐Ÿ’ป RISC-V Simulator of RV32I ISA. 5-stage pipeline / out-of-order execution with Tomasulo algorithm and Speculation. Support runtime visualization. Project report available.
C++
154
star
6

raytracer.rs

โšก A high-performance path tracer implemented in Rust based on "Ray Tracing in One Weekend" featuring static dispatch, multi-threaded rendering and a variety of preset scenes.
Rust
92
star
7

HallOfShame

Hall of Shame
67
star
8

raytracer-tutorial

raytracer project for PPCA 2020
Rust
60
star
9

linux-kernel-labs

Linux kernel labs
C
53
star
10

make-a-fortune

An open-source anonymous forum frontend.
TypeScript
53
star
11

raft-kvs

โ›ต A distributed key-value store based on Raft. (WIP)
Rust
42
star
12

notes

Lecture notes at SJTU
C
40
star
13

mips-simulator

๐Ÿ’ป A 5-stage pipeline MIPS CPU design in Haskell.
Haskell
33
star
14

uring-positioned-io

Async positioned I/O with io_uring.
Rust
32
star
15

mips-cpu

๐Ÿ’ป A 5-stage pipeline MIPS CPU implementation in Verilog.
Verilog
26
star
16

BlueSense

๐ŸŒˆ BlueSense is a long-term project for monitoring Shanghai environment data.
Vue
25
star
17

fourier-transform-drawing

Inspired by 3Blue1Brown. Apply fourier transform to an SVG path and draw the result on canvas.
HTML
22
star
18

skyzh-site

Alex Chi's personal site
MDX
20
star
19

rust-ycsb

YCSB in Rust (WIP)
Rust
19
star
20

Meteor

๐Ÿš† Fine-grained analysis and visualization of Hangzhou Metro for efficient traveling in metro system. Project report, slide and presentation video included.
C++
18
star
21

pg_poop

A Postgres extension that rewrites strings to ๐Ÿ’ฉ
C
16
star
22

zoom-url-generator

Generate Zoom URL
HTML
16
star
23

bustub-web-shell

BusTub web shell
HTML
15
star
24

skyzh

12
star
25

BPlusTree

๐ŸŒฒ Fully unit-tested B+ tree with basic paging implemented in C++
C++
11
star
26

SJTU_Diploma

ไบคๅคงๅญฆ็ง‘ไบคๆต็พคๅˆ—่กจ (Originally made by @LuminousXLB) ้กน็›ฎๅทฒ่ฟ็งปๅˆฐ @SJTU-Plus
HTML
11
star
27

julia.metal

๐ŸŽ‡ Render Julia Sets in real-time with Metal API on macOS
Swift
8
star
28

go-dht

๐ŸŒŽ Chord in golang
Go
8
star
29

SJTU-RM-Hurricane

๐ŸŒช๏ธ An extensible task-based robot control system on STM32 embedded platforms made for SJTU RoboMaster Competition, using open-source toolchain OpenSTM32
C++
8
star
30

chaos-video

Course Project of CS339 Computer Networks
JavaScript
7
star
31

r-by-example

๐Ÿ“š Solutions for the book "R by Example"
R
6
star
32

tenitsu

๐ŸŽพ A robot automatically finds and fetches tennis balls on the ground. Use OpenCV on Android for computer vision. Final project for SJTU ME116 "IntroME".
Kotlin
6
star
33

fishing

Yet another boring fishing game
JavaScript
5
star
34

oom_killer

Project 2 of SJTU CS356 Operating System Projects
Makefile
5
star
35

data-structure-deque

A deque of O(sqrt n) complexity on access, insert and remove, with an optimization for O(log n) access based on fenwick tree.
C++
5
star
36

CloudOJ

๐ŸŒฉ๏ธ (DEPRECATED) An Online Judge. Deprecated due to low efficiency and security issues.
PHP
4
star
37

fish-agent-simulation-mcm2020

๐ŸŸ๐ŸŸ An agent-based model for simulating fish distribution in North Atlantic.
Rust
4
star
38

game-theory-on-matrix

An agent-based model for researching game theory dynamics on matrix-like structure.
Python
4
star
39

the-tale-of-slime

Yet another boring game. No textures, no graphics, just shapes. WIP. Working on this game only when I'm boring.
JavaScript
4
star
40

ddcm-protocol

๐ŸŒ A protocol based on Kademlia and designed for peer-to-peer distrubuted computing
Python
4
star
41

kvs

Key-Value Store [Practical Networked Applications in Rust]
Rust
3
star
42

BlueMarine

๐ŸŒƒ Collect climate data from embedded devices with serial connection and BLE. Part of the BlueSense project.
Python
2
star
43

bustub-btree-shell

2
star
44

bors-playground

Rust
2
star
45

lisp-interpreter

๐Ÿ’Ž A Lisp interpreter in Ruby
Ruby
2
star
46

MrSans

๐Ÿค– Mr. Sans is a bot reporter for BlueSense. Part of the BlueSense project.
Go
1
star
47

BlueMonitor

๐ŸŒƒ Blue Sense: Sense of Blue Sky. This is the Raspberry Pi part of Blue Sense.
Python
1
star
48

prosea

๐Ÿ“š A crowdsourced contest solution sharing platform built for online STEM test of Innovation Competition
JavaScript
1
star
49

conway.ts

Conway's Game of Life in TypeScript
TypeScript
1
star
50

sjtuctf-2019-writeup

โ“ Solutions and exploitation snippets for SJTU CTF 2019
Python
1
star
51

serialpb

Reliable packet transmission over serial interface
C++
1
star
52

FlyThat

Code for Kaggle in-class competition
Python
1
star