Download Blackboard course exports from Curtin University's LMS
Project description
course-dl
Download Blackboard course exports from Curtin University's LMS.
Installation
uv tool install course-dl
playwright install chromium
Or install from source:
git clone https://github.com/michael-borck/course-dl.git
cd course-dl
uv sync
uv run playwright install chromium
Usage
Basic usage
# Search by unit code (fuzzy matched against course titles)
course-dl COMP1000 ISAD1000
# Search by partial name
course-dl "Data Structures" "Linear Algebra"
# Mix codes and names
course-dl COMP1000 "Application Development"
# Interactive picker — no args, just select from a list
course-dl
# Export all available courses
course-dl --all
Options
course-dl [SEARCH...] [OPTIONS]
Positional:
SEARCH Search terms to fuzzy-match against course titles.
If omitted, an interactive picker is shown.
Options:
-f, --file PATH File with search terms (one per line or comma-separated)
-u, --username STR Curtin username
-p, --password STR Curtin password
-o, --output-dir PATH Output directory (default: ./exports/)
--all Download all courses visible in Blackboard
--overwrite Re-download courses that already exist locally
--match-threshold INT Fuzzy match score 0-100 (default: 60)
--visible Show the browser window (default: headless)
--timeout INT Navigation timeout in ms (default: 60000)
Fuzzy matching
Course titles in Blackboard are often long and include extra metadata
(e.g. COMP1000 - Unix and C Programming - S1 2026 - Bentley (AUTO_CREATED_123)).
You don't need the full title — just provide enough to uniquely identify it:
course-dl COMP1000 # matches by unit code anywhere in title
course-dl "Unix and C" # matches by partial name
course-dl "Data Structures" # matches by topic
Adjust --match-threshold (default 60) if matches are too loose or too strict.
Interactive picker
When no search terms are provided, an interactive checkbox list is shown after login. Use arrow keys to move, space to toggle selection, and enter to confirm.
Skip / overwrite behaviour
By default, course-dl skips courses that already have a .zip file in the
output directory matching the course name. Use --overwrite to force re-download.
Credentials
Credentials are resolved in order:
- CLI flags (
-u,-p) - Environment variables (
CDL_USERNAME,CDL_PASSWORD) .envfile (searched in order):~/.config/course-dl/.env~/.course-dl.env./.env
- Interactive prompt
Copy .env.example to one of the above locations:
cp .env.example ~/.config/course-dl/.env
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file course_dl-0.2.1.tar.gz.
File metadata
- Download URL: course_dl-0.2.1.tar.gz
- Upload date:
- Size: 7.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7d8f3b4b2b99859b0afc697473eaca9f49558d3c20a37c0cf423d84fa541b855
|
|
| MD5 |
b1ae7107f9e785b47a1a8cbe42cb4ab2
|
|
| BLAKE2b-256 |
b9944116d27ad9bf72182b106ced1c8af0f0b515dac19b68261390ae0f351f65
|
File details
Details for the file course_dl-0.2.1-py3-none-any.whl.
File metadata
- Download URL: course_dl-0.2.1-py3-none-any.whl
- Upload date:
- Size: 10.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
11fe78b8de8e9baf350ee76f96213d56d6995a01e6c577f453b6b001b01ebea6
|
|
| MD5 |
6656d69fbbd7184dfe3fbc16bf672894
|
|
| BLAKE2b-256 |
fddba9f1c5628ac6f10e3cd703c3527bbadb1684b92cf6078d969148e5c63bf8
|