This is a nodejs project that can download Kaltura and Zoom videos that are linked within iframes on Brightspace. It is powered by Puppeteer for web scraping.
Mostly working but incomplete. See notes.txt for todos.
- Install Nix (requires macOS or Linux).
- Run
nix-shellin the project root. This will download nodejs. Proceed with this shell for the steps under Running.
Without using Nix, such as on Windows, you can install Node.js manually to be able to run node on the command line.
Alternatively, use a package manager of your choice.
-
To download dependencies, run
npm installin the project root. -
For each Brightspace course from which you want to save videos, copy the URL of the page that shows a listing of all videos (within Kaltura or Zoom) and paste it into the variable at the top of index.js.
- This page on Brightspace is usually reached by clicking the headings "Zoom" or "Media Gallery", so copy that URL. Place all these URLs in the file index.js under
// All pages to downloadnear the top of the file (replace the existing entries with your own), setting the correspondingtype:field to either"kaltura"or"zoom"depending on which type that URL contains in its webpage. Also, note that you can skip entries by settingskip:totrueinstead offalse. This is useful if you already downloaded them.
- This page on Brightspace is usually reached by clicking the headings "Zoom" or "Media Gallery", so copy that URL. Place all these URLs in the file index.js under
-
Run
node index.jsto run the downloader. Files will be saved to thedownloadfolder in the project root -- you can make this a symlink to any location if you want to change where the downloads go. -
A Chromium window should open. It will ask you to log into Brightspace. Log in, then switch back to the terminal window and press enter.
-
The downloading will begin. If needed you can interrupt/stop it anytime and resume later -- it will skip files that were not downloaded in the current downloading session and whose file names already exist. (To change this behavior, you can change
skipDownloadsIfSameName = true;tofalsein index.js, which will make downloads overwrite existing files.)