Skip to content

Repository files navigation

NTU COOL Get Class Material

一行指令,把 NTU COOL 整門課PDF、上課簡報、上課影片下載下來。

如何使用

開啟powershell,輸入以下指令:

pip install get-class-material
ntu-cool-gcm

怎麼更新到最新版

不確定要不要更新? 直接跑這行就對了 —— 已經是最新版的話它什麼都不會做,不會弄壞任何東西:

pip install --upgrade get-class-material

就是安裝指令多加 --upgrade。建議偶爾跑一次拿最新修正。 (0.2.18 以後的版本啟動時會自動提醒你有沒有新版;但如果你現在是更舊的版本,看不到提醒是正常的 —— 跑上面那行更新一次就會開始有提醒了。)


這個工具是什麼

期中期末考前,你想把整學期的講義跟錄影影片整理一份在本機,丟給 AI 幫你做摘要、複習、出考古題?

這個工具會自動:

  1. 用你自己的台大帳號登入 NTU COOL(只在瀏覽器登入頁輸入密碼,程式不會看到)
  2. 把你選的課程整門搬下來:PDF 講義、Page 文字內容、YouTube 連結影片、NTU 上課錄影

之後你可以:

  • 直接拖 PDF 到 ChatGPT / Gemini 問問題
  • .md 文字貼進 NotebookLM 做筆記

誰適合用

  • 台大學生,有自己 NTU COOL 帳號,想要把整門課的教材下載卻不想一個一個檔案手動下載

新手使用完整教學

第 1 步 — 確認你有沒有 Python

Python 是這個工具運作所需的程式語言環境。

打開 PowerShell(往下兩段教怎麼打開),貼上這行按 Enter:

python --version

如果看到類似 Python 3.13.x,而且 3 後面那個數字 ≥ 11,就跳到第 3 步。

如果看到「找不到」、「無法辨識的指令」,或顯示的版本是 3.10 以下,先做第 2 步。

第 2 步 — 安裝 Python

https://www.python.org/downloads/ 下載最新版,執行安裝程式。

非常重要: 安裝畫面第一頁的最下面有個小勾選 「Add Python to PATH」「Add python.exe to PATH」,請勾起來。沒勾的話 PowerShell 之後找不到 python,就要重裝。

裝完之後關掉所有 PowerShell 視窗,再開一次新的(這樣才會吃到新的 PATH 設定)。再跑一次第 1 步確認。

第 3 步 — 打開 PowerShell

PowerShell 是 Windows 內建的「黑黑的命令列視窗」。

最快的開法:

  1. 按鍵盤 Win(就是有 Windows 標誌那顆)
  2. 直接打 PowerShell
  3. 按 Enter

或是用滑鼠:開始選單 → 搜尋 PowerShell → 點開

開啟後你會看到一個藍色或黑色的視窗,最後一行是類似 PS C:\Users\你的名字> 的字。游標在那邊閃。

從現在起,所有「貼上指令」都是貼到這個視窗裡然後按 Enter。

第 4 步 — 安裝這個工具

在 PowerShell 貼上:

pip install get-class-material

按 Enter,等它跑完(會看到一堆 Collecting...Downloading...Installing...)。最後看到 Successfully installed ... 就 OK。

pip 是什麼? 它是 Python 內建的「套件下載器」。安裝 Python 時會跟著一起裝。如果這行說「找不到 pip」,通常代表 Python 沒裝好或沒勾「Add Python to PATH」,回到第 2 步重裝。

第 5 步 — 第一次跑工具

ntu-cool-gcm

第一次跑會花幾分鐘,因為它會幫你裝幾個額外的東西:

  • Chromium 瀏覽器(讓工具能幫你登入,大約 200MB)
  • ffmpeg(合併 YouTube 影片用,大約 240MB,Windows 用 winget 自動裝)
  • Node.js(處理 YouTube 影片用,Windows 用 winget 自動裝)

如果跳出「使用者帳戶控制」要求權限,點「是」(因為 winget 在裝系統工具)。

如果你看到 winget 不存在,工具會印出手動安裝的指令給你。Windows 11 大多有內建 winget

裝完後,工具會跳出一個 Chromium 瀏覽器視窗,自動連到 NTU COOL 登入頁。用平常的學號密碼登入

🔒 密碼安全提醒:

  • 密碼輸入在這個瀏覽器登入頁,跟你平常用 Chrome 登入一樣
  • 工具本身從來不會看到密碼(它只在登入完拿瀏覽器的 cookie)
  • 不要把密碼貼在 PowerShell、聊天室、或任何其他地方

登入完成後,不要關閉瀏覽器視窗,工具會自己處理。

第 6 步 — 選課

登入完成後,工具要連線 NTU COOL 抓你的課程清單。這時你會看到一個會轉的小橫槓:

- 連線 NTU COOL 中…
| 讀取課程清單中…

這是正常的,代表它正在跟伺服器要資料(網路慢的話會轉久一點),不是當掉。轉完就會列出你的課程,像這樣:

找到 5 門課程:

  1) 日文一下 Japanese (Ⅰ) (2)
  2) 作業管理 Operations Management
  3) 音樂、演化與大腦 Music, Evolution and the Brain
  4) 組織行為學 Organizational Behavior
  5) 管理科學模式 Management Science Model

選擇課程 (1-5 可空格多選如 "1 3 5", h = 過去課程, a = 下載全部, en = English, q = 離開)
>

可以這樣輸入:

你輸入 結果
3 下載第 3 門
1 3 5 一次下載第 1、3、5 門(空格分隔)
1,2,4 也可以用逗號
a 下載全部 5 門
h 進入過去學期的選單,選舊課程
en 切換成英文介面
q 離開

按 Enter 後,工具就會開始幫你抓檔案。檔案大的影片會看到進度條:

[##########----] 47%  12.3 / 26.1 MB  3-1 演化的證據.mp4

第 7 步 — 下載完成

跑完會看到:

完成。
  PDF:        新增 6、跳過 0、失敗 0
  Page:       新增 3、跳過 0、失敗 0
  YouTube:    新增 7、跳過 0、失敗 0
  上課影片:   新增 4、跳過 0、失敗 0

檔案存放位置:
  C:\Users\你\Documents\ntu-cool-gcm_material\音樂、演化與大腦 Music, Evolution and the Brain (57544)

最後那行就是你的檔案放在哪。 用檔案總管打開就能看到。

之後會問你:

下一個動作: c = 繼續下載別的 / a = 下載全部 / h = 過去課程 / en = English / q = 離開
> 

要再下載另一門就 c,要結束就 q(會自動關閉 PowerShell 視窗)。


你會拿到什麼

下載到的目錄結構長這樣:

C:\Users\你\Documents\ntu-cool-gcm_material\
└── 音樂、演化與大腦 Music, Evolution and the Brain (57544)\
    ├── course_overview.md        ← 這份課程的目錄索引(可以餵給 AI)
    ├── week1\
    │   ├── SYLBS_班次1.pdf
    │   └── 1-1 生物音樂學簡介.mp4
    ├── week2\
    │   ├── 2-1-1 伊甸園外的生命長河.pdf
    │   └── 2-3-2 緊拉慢唱的妙用.md
    └── week3\
        └── ...
  • .pdf — 老師上傳的講義,原始檔
  • .md — Page 文字內容(VS Code、Typora、Obsidian 都能讀)
  • .mp4 — YouTube 影片 + NTU 上課錄影,都用人看得懂的中文標題
  • course_overview.md — 整門課的目錄索引,列出每週有什麼、檔案放在哪。直接拖到 AI 就可以叫它幫你做學習計畫

下載後怎麼給 AI 用

PDF

直接拖到 ChatGPT、Gemini、Claude 的對話框,然後問:

  • 「幫我整理這份講義的重點」
  • 「出 5 題選擇題」
  • 「這份跟我之前丟的那份有什麼差別?」

Markdown(.md 檔)

  • NotebookLM: 把整個 .md 檔當「來源」上傳,可以一次餵很多份
  • ChatGPT / Gemini: 用文字編輯器開,複製貼上即可

影片(.mp4)

影片本身大多 AI 工具不能直接吃,要先轉成文字:

  • MacWhisper(Mac)、Whisper Desktop(Windows)、或 OpenAI 線上 Whisper
  • 轉好的逐字稿再丟給 AI 做摘要

整門課一起

把整個課程資料夾的 course_overview.md 跟幾份重點 PDF 一起拖到 NotebookLM,叫它「根據這些教材幫我做考試重點摘要」。


常見任務

之後再跑一次

ntu-cool-gcm

只要登入沒過期(通常一兩天內),不用任何額外動作。已經抓過的檔案會自動跳過,只補新增的

登入過期了

多數情況你不用做任何事 — 直接跑 ntu-cool-gcm,工具會在連線時自動發現登入過期,並馬上幫你開瀏覽器重新登入(你會看到「登入已過期,開啟瀏覽器重新登入…」)。

如果想手動強制重新登入,也可以加:

ntu-cool-gcm --refresh-session

只想下載 PDF,不要影片

ntu-cool-gcm --skip-youtube --skip-cool-videos

可以混搭:--skip-pdfs--skip-pages--skip-youtube--skip-cool-videos

換存檔位置

ntu-cool-gcm --out D:\我的課程

預設是在你的「文件 / Documents」資料夾底下的 ntu-cool-gcm_material/

如果你的目前資料夾已經有舊版建立的 ntu-cool-gcm_material/,工具會沿用那個資料夾,避免把舊檔案拆散。

Word / PowerPoint / Excel / Zip 等非 PDF 檔

預設會全部下載:Word、PowerPoint、Excel、Zip、圖片、影音等檔案會保留原本的副檔名(.docx / .pptx / .xlsx / .zip …),可以直接雙擊打開。只有「本來就是 PDF」或「副檔名不明」的檔案才會統一存成 .pdf,方便後續餵給 AI 工具。

如果你想連那些 PDF / 不明副檔名的檔案也保留原始副檔名,可以加:

ntu-cool-gcm --all-file-types

已經知道課程 ID(網址裡的數字)

ntu-cool-materials download-course --course-id 57544

(例如 https://cool.ntu.edu.tw/courses/57544 裡的 57544)

檢查環境是不是都裝好了

ntu-cool-materials doctor

會列出 Python、瀏覽器、ffmpeg 等等的安裝狀態。

如果有缺,加上 --fix 嘗試自動修:

ntu-cool-materials doctor --fix

看自己是哪個版本(回報問題時很有用)

ntu-cool-gcm --version

doctor 的最上面也會印出版本號。回報問題時附上版本,會比較好幫你查。

工具每次啟動時也會自動檢查有沒有新版(一天最多查一次,離線就跳過,不會拖慢速度)。如果有新版會提醒你:

💡 有新版本 0.2.18(你目前 0.2.17)。更新指令: pip install --upgrade get-class-material

照著跑那行 pip install --upgrade get-class-material 就更新好了。

YouTube 不公開影片下載失敗

大部分 NTU 老師的 YouTube 影片是「不公開 (unlisted)」,這種不需要登入就能抓,工具會直接下載。

只有真正設「私人 / 限齡 / 會員限定」的影片才需要你的 YouTube 登入。這時工具不用你另外登入——它會在有影片失敗時問你一次:

有 2 個 YouTube 影片下載失敗。
如果是私人 / 限齡 / 會員影片,需要你的 YouTube 登入狀態才能抓。
要用你瀏覽器裡已登入的 YouTube 帳號重試嗎? [y/N]

y,工具就會直接讀取你平常用的瀏覽器(Chrome / Edge / Firefox …)裡已經登入的 YouTube 帳號來重試——你不用再登入一次。

💡 為什麼是讀瀏覽器、不是跳出來登入? Google 會擋「被程式控制的瀏覽器」登入(會顯示「這個瀏覽器可能不安全」),所以直接讀你平常瀏覽器裡的登入狀態最穩。

⚠ 如果你用 Chrome / Edge,重試前請先完全關掉那個瀏覽器——瀏覽器開著的時候 cookie 檔會被鎖住,讀不到。Firefox 通常不用關。

前提是你平常那個瀏覽器有登入會看到這些影片的 Google 帳號(通常就是你的台大 Google 或個人帳號)。


常見問題

Q: 怎麼更新到最新版?

在 PowerShell 跑這行:

pip install --upgrade get-class-material

已經是最新版的話它不會做任何事,所以隨時都可以放心跑。想確認自己現在哪一版,打 ntu-cool-gcm --version

Q: 輸入 python --version 顯示「無法辨識」/「找不到」

代表你還沒裝 Python,或者裝的時候沒勾「Add Python to PATH」

解法: 重裝一次,這次記得勾那個選項。然後關掉 PowerShell 重開

Q: 輸入 pip install get-class-material 顯示「找不到 pip」

跟上一題一樣,通常是 Python 沒裝好。重裝 Python 並勾「Add Python to PATH」。

Q: PowerShell 顯示「無法載入指令碼,因為這個系統上已停用指令碼執行」

這是 Windows 的安全設定。打開 PowerShell 以系統管理員身份(右鍵點 PowerShell 圖示 → 以系統管理員身份執行),貼上:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Y 確認。然後關掉視窗,正常開一個新的就 OK。

Q: ntu-cool-gcm 跑下去說 winget 找不到

winget 是 Windows 11 內建的應用程式安裝工具。Windows 10 比較舊版可能沒有。

解法: 到 Microsoft Store 搜尋「應用程式安裝程式」(App Installer),點安裝,重開 PowerShell。

或者直接手動安裝 ffmpeg 跟 Node.js:

  1. ffmpeg: https://www.gyan.dev/ffmpeg/builds/(下載 ffmpeg-release-essentials.zip)
  2. Node.js: https://nodejs.org/(下載 LTS 版)

裝完關掉 PowerShell 重開,再跑 ntu-cool-gcm

Q: NTU COOL 登入過期了

直接再跑一次 ntu-cool-gcm 就好 — 工具會自動發現過期並開瀏覽器讓你重新登入。要手動強制的話可以加 --refresh-session:

ntu-cool-gcm --refresh-session

Q: YouTube 影片抓不到 / 失敗很多

最常見原因:

  1. 是私人 / 限齡 / 會員影片 — 需要你的 YouTube 登入。工具下載失敗時會問你「要用瀏覽器裡已登入的帳號重試嗎?」,按 y 即可(用 Chrome/Edge 的話記得先關掉瀏覽器再重試)
  2. 沒裝 ffmpeg / Node.js — 跑 ntu-cool-materials doctor 確認
  3. 影片有 DRM 保護 — 罕見但會發生,這種真的抓不下來

ntu-cool-materials doctor 看有沒有缺東西。

Q: 下載到一半中斷怎麼辦

直接再跑一次 ntu-cool-gcm 即可。

  • 已下載完的檔案會跳過
  • 大檔影片會從中斷的地方續傳(不用重抓)

Q: 我的檔案到底放在哪

預設在你的「文件 / Documents」資料夾底下,叫 ntu-cool-gcm_material/

常見位置像這樣:

C:\Users\你\Documents\ntu-cool-gcm_material\

如果你以前已經在目前資料夾建立過 ntu-cool-gcm_material/,工具會優先沿用那個舊資料夾。

每次跑完工具最後一行也會印「檔案存放位置:」+ 完整路徑。

Q: 可以只抓 PDF 嗎

可以:

ntu-cool-gcm --skip-pages --skip-youtube --skip-cool-videos

Q: 可以換輸出資料夾嗎

可以:

ntu-cool-gcm --out D:\我的課程資料夾

Q: 影片畫質好像不太好

YouTube 影片畫質取決於老師上傳的原檔。多數 NTU 老師上傳的是 480p,工具會自動抓最高畫質,所以你看到的就是來源最高解析度。

NTU 上課影片(cool-video)畫質維持來源原檔。

Q: 這樣會不會違反版權

這個工具只下載你自己有權限看到的課程教材 — 跟你平常用瀏覽器一個個下載的權限一模一樣,不繞過任何權限系統。

但是:

  • 下載下來的教材仍然受老師、出版社、原作者的版權保護
  • 僅限自己學習使用,不要公開散播、不要上傳到網路、不要分享給校外人士
  • 老師同意才能在合理範圍內分享給同班同學

簡單說:自己讀沒問題,公開散播違法。


安全與隱私提醒

密碼

  • 密碼輸入在工具跳出來的瀏覽器登入頁(就是 NTU COOL 的官方登入頁面)
  • 工具本身從來不會看到密碼
  • 不要把密碼複製貼上到 PowerShell、聊天室、Email 或任何其他地方

.secrets/ 資料夾

工具會在你執行的目錄下建一個 .secrets/ 資料夾,裡面存:

  • 你登入後的 cookie(等同於登入狀態)
  • YouTube 的 cookie

這個資料夾等同於你的登入憑證。請:

  • 不要分享給別人,連同學也不要
  • 不要上傳到 GitHub、雲端硬碟、Discord
  • 不要截圖貼到聊天室
  • ✅ 換電腦就重新跑 ntu-cool-gcm --refresh-session 重新登入即可

預設它是隱藏資料夾(Windows 用 dir 看不到,要在檔案總管開「顯示隱藏檔」才看得到)。

下載的教材

不要公開散播。詳見上面的版權問答。


進階:其他指令

如果你只想看可見課程清單,不下載:

ntu-cool-materials courses --refresh-session

抓某課的公告:

ntu-cool-materials announcements --course-id 57544 --refresh-session --print

完整指令清單請看 --help:

ntu-cool-materials --help
ntu-cool-gcm --help

給開發者 / 從原始碼安裝
git clone https://github.com/jabir95tsai/get_class_material.git
cd get_class_material
pip install -e .
python -m playwright install chromium
python -m unittest discover -s tests

架構說明見 CLAUDE.md

支援的 Python 版本:3.11+。Playwright + yt-dlp + ffmpeg + Node.js 為下載 YouTube 影片所需,工具會在第一次執行時嘗試自動安裝。

About

One-command bulk downloader for NTU COOL (Canvas) course materials — PDFs, lecture videos, and Pages.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages