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-shell
in 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 install
in 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 download
near 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:
totrue
instead 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.js
to run the downloader. Files will be saved to thedownload
folder 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;
tofalse
in index.js, which will make downloads overwrite existing files.)