Download lecture files, videos, and assignment info from SNU eTL (Canvas LMS).
- Files: Download all files in a course, preserving the eTL folder structure
- Videos: SNU-CMS lecture videos and YouTube-embedded videos
- Assignments: Save assignment details (due date, points, submission type) as HTML
- Semester filter: Download only courses matching a specific semester (e.g.
2026-1) - Incremental: Skips already-downloaded files on re-run
- Session caching: Login once, reuse the session until it expires (
--logoutto clear)
- Python 3.11+
- uv
- A Chromium-based browser (Chrome, Edge, etc.) — ChromeDriver is managed automatically
git clone https://github.com/MilkClouds/snu_downloader.git
cd snu_downloader
uv sync
uv run python main.py [options]
| Flag | Description | Default |
|---|---|---|
-s, --semester |
Filter by semester (e.g. 2026-1) |
all semesters |
-l, --lecture |
Course ID or all |
all |
-d, --dir |
Output directory | ./downloads |
-y, --yes |
Skip disclaimer prompt | |
--logout |
Clear saved session and exit |
On first run, a Chrome window opens for SNU SSO login (MFA supported). Subsequent runs reuse the saved session.
The course ID can be found in the eTL URL: https://myetl.snu.ac.kr/courses/<id>
# Download all courses from 2026 spring semester
uv run python main.py -s 2026-1
# Download a single course
uv run python main.py -l 123456
# Download to a custom directory, skip disclaimer
uv run python main.py -s 2026-1 -d ~/lectures -ydownloads/
<course name>/
lecture.pdf
<subfolder>/
slides.pptx
_assignments/
<assignment>.html
_videos/
<lecture>.mp4
This program is not affiliated with Seoul National University. Use at your own risk.
- SeleniumBase — Selenium-based browser automation framework
- Vibium — Browser automation tool
- Helium — Lightweight Selenium wrapper