這是 coursera-dl 的一個分支,可與現代 Python 和現代 coursera.org 配合使用,並添加了功能和修補程式。
Coursera 下載器
介紹
特徵
免責聲明
安裝說明
Unix 系統的替代安裝方法
ArchLinux
自行安裝依賴
所有作業系統的建議安裝方法
安裝缺失依賴項的替代方法
碼頭工人
視窗
建立 Coursera 帳戶
運行腳本
恢復下載
故障排除
中國問題
在此頁找到 0 個章節和 0 個講座
下載超時
Windows:代理支援
Windows:建立進程失敗
SSLError: [Errno 1] _ssl.c:504: 錯誤:14094410:SSL 例程:SSL3_READ_BYTES:sslv3 警報握手失敗
MathJax.js
的替代 CDN
報告問題
提交問題/報告錯誤
回饋
接觸
這個腳本可以更輕鬆地大量下載 Coursera 課程的講座資源(例如影片、ppt 等)。 給定一個或多個班級名稱,它從講座頁面獲取週和班級名稱,然後將相關資料下載到適當命名的文件和目錄中。
這項工作最初的部分靈感來自 [youtube-dl][3],我透過它下載了許多其他優秀視頻,例如來自可汗學院的視頻。
支援各種課程(即“舊平台”/基於時間的課程以及“新平台”/點播課程)。
故意提供詳細的名稱,以便它可以在大多數介面上正確顯示和排序(例如,Android 裝置上的 VLC 或 MX Video)。
基於正規表示式的部分(週)和講座名稱篩選器僅下載某些資源。
檔案格式擴充過濾器以取得您想要的資源類型。
從coursera-dl.conf
檔案載入的預設參數。
核心功能在 Linux、Mac 和 Windows 上經過測試。
cs-dlp
僅適用於 Coursera 允許您下載的資料。
我們不鼓勵任何違反其使用條款的使用。相關摘錄:
「[...] Coursera 授予您造訪和使用網站的個人、非獨佔、不可轉讓的許可。您只能從網站下載資料用於您個人的非商業用途。您不得以其他方式複製、複製、轉發、分發、出版、商業利用或以其他方式轉讓任何材料,也不得修改或創建該材料的衍生作品。
cs-dlp
需要 Python 3 和註冊感興趣課程的 Coursera 帳戶。
注意: cs-dlp
與 Python 2 不相容。
在任何作業系統上,請確保將 Python 可執行檔位置新增至PATH
環境變數中,並且安裝依賴項後(請參閱下一節),對於基本用法,您將需要從主目錄呼叫腳本項目並在其前面添加單字python
。 您也可以透過檢視本文檔的「執行腳本」部分來使用該程式的更多進階功能。
注意:您必須已經(手動)同意要與cs-dlp
一起使用的特定課程的榮譽代碼。
從命令列(最好是從虛擬環境),只需發出以下命令:
git clone https://github.com/raffaem/cs-dlp cd cs-dlp python -m pip install --user .
註 1:我們強烈建議您不要在電腦上全域安裝該軟體包(即使用 root/管理員權限),因為安裝的模組可能會與系統中安裝的其他 Python 應用程式發生衝突。偏好使用選項--user
來pip install
。
cs-dlp
目前沒有 AUR 軟體包。歡迎幫助!
如果您還沒有帳戶,請建立 [Coursera][1] 帳戶並註冊課程。有關課程列表,請參閱 https://www.coursera.org/courses。
要使用 Coursera 進行身份驗證,您需要 CAUTH cookie。
目前支援兩種方法:您可以讓cs-dlp
自動從瀏覽器取得它,或者您可以手動傳遞一種方法。
自動方式
chrome
用於谷歌瀏覽器
chromium
opera
opera_gx
brave
edge
vivaldi
firefox
librewolf
safari
打開您最喜歡的瀏覽器並登入 Coursera
使用--cauth-auto browser
選項呼叫cs-dlp
。
browser
的有效選項有:
手動方式
將 CAUTH cookie 傳遞給--cauth
選項。
有關此實用程式支援的執行時間選項的完整、最新參考,請參閱cs-dlp --help
。
透過提供您的 Coursera CAUTH cookie、類別名稱以及任何其他參數來執行腳本來下載資料:
cs-dlp --cauth-auto chrome modelthinking-004
以下是如何從命令列呼叫cs-dlp
的一些範例:
Multiple classes: cs-dlp --cauth-auto chrome saas historyofrock1-001 algo-2012-002 Filter by section name: cs-dlp --cauth-auto chrome -sf "Chapter_Four" crypto-004 Filter by lecture name: cs-dlp --cauth-auto chrome -lf "3.1_" ml-2012-002 Download only ppt files: cs-dlp --cauth-auto chrome -f "ppt" qcomp-2012-001 Get the preview classes: cs-dlp --cauth-auto chrome -b ni-001 Download videos at 720p: cs-dlp --cauth-auto chrome --video-resolution 720p ni-001 Specify download path: cs-dlp --cauth-auto chrome --path=C:CourseraClasses comnetworks-002 Display help: cs-dlp --help Maintain a list of classes in a dir: Initialize: mkdir -p CURRENT/{class1,class2,..classN} Update: cs-dlp -n --path CURRENT `ls CURRENT`
注意:如果您的ls
指令使用別名來顯示彩色輸出,您可能會遇到問題。 請務必轉義ls
指令(使用ls
)以確保不會將特殊字元傳送到腳本。
請注意,我們確實支援新平台(「點播」)課程。
預設情況下,影片以 540p 解析度下載。對於點播課程, --video-resolution
標誌接受 360p、540p 和 720p 值。
要僅下載.txt
和/或.srt
字幕檔案而不是視頻,請使用--ignore-formats mp4 --subtitle-language en
或視頻編碼的任何格式以及所需的字幕語言。
如果您想儲存首選參數,請建立一個名為coursera-dl.conf
的文件,其中應執行腳本,格式如下:
--subtitle-language en,zh-CN|zh-TW --download-quizzes #--mathjax-cdn https://cdn.bootcss.com/mathjax/2.7.1/MathJax.js # more other parameters
如果在命令列上再次提供檔案中指定的參數,這些參數將被覆寫。
注意:在coursera-dl.conf
中,所有參數不應用引號引起來。
在預設模式下,當您透過按CTRL + C中斷下載程序時,部分下載的檔案將從磁碟中刪除,您必須從頭開始下載程序。如果您的下載被鍵盤中斷 ( CTRL + C ) 以外的其他原因中斷,例如突然的系統崩潰,部分下載的檔案將保留在您的磁碟上,下次您再次啟動該過程時,這些檔案將從下載清單中丟棄!因此,我們新增了一個名為--resume
的選項,它可以從停止的地方繼續下載:
cs-dlp --cauth-auto chrome --resume sdn1-001
此選項也可以與外部下載器一起使用:
cs-dlp --cauth-auto chrome --wget --resume sdn1-001
註 1 :某些外部下載器使用其自己的內建復原功能,該功能可能與其他下載器不相容,因此使用它們的風險由您自行承擔。
注意 2 :請記住,在復原模式下,中斷的檔案不會從磁碟中刪除。
如果您在下載課程資料時遇到問題,請嘗試查看以下操作之一是否可以解決您的問題:
確保您使用的類別名稱與該類別的 URL 中使用的資源名稱相對應: https://www.coursera.org/learn/
/welcome
您是否嘗試過使用--clear-cache
選項清除快取的 cookie/憑證?
請注意,許多課程(也許是大多數?)可能會在課程完成後一段時間後刪除這些材料,而其他課程可能會保留這些材料直到同一課程的下一個課程/課程(以避免學術不誠實的問題,顯然)。
簡而言之,我們不保證您在課程結束後能夠下載,不幸的是,我們無法為您提供任何幫助。
可以使用瀏覽器擴充功能([1][9]、[2][10])匯出 Netscape 樣式的 cookie 文件,並將其與-c
選項一起使用。當透過密碼進行身份驗證不起作用時(身份驗證過程不時發生變化),這會派上用場。
對於尚未開始但之前已經進行過迭代的課程,有時可以提供預覽,其中包含上一課程的所有課程。可以透過傳遞--preview
參數來下載這些檔案。
如果您收到類似Could not find class:
的錯誤,則:
驗證課程名稱是否正確。 coursera 中目前的班級名稱由簡短的課程名稱(例如class
和課程的當前版本(數字)組成。例如,對於名為class
的類,您必須使用class-001
、 class-002
等。
其次,確認您已註冊該課程。如果您未透過網站正式註冊並同意榮譽課程,您將無法存取課程材料。
如果您來自中國並且在下載影片時遇到問題,請在主機檔案(/etc/hosts) 中新增「52.84.167.78 d3c33hcgiwev3.cloudfront.net」並使用「ipconfig/flushdns」刷新DNS 可能會起作用(請請參閱https: //github.com/googlehosts/hosts 以了解更多資訊)。
首先,請確保您已註冊要下載的課程。
許多舊課程已經停止招生,因此通常無法選擇。在這種情況下,請嘗試使用--preview
選項下載。有些課程允許在不註冊的情況下下載講座材料,但這並不常見,並且不能保證適用於每門課程。
最後,如果您至少有列出所有課程材料的索引文件,則可以下載影片。也許您已註冊的朋友可以為您儲存該課程頁面。在這種情況下,請使用--process_local_page
選項。
或者,您可能想嘗試針對此問題設計的各種瀏覽器擴充功能。
如果以上方法都不適合您,我們無能為力。
cs-dlp 支援外部下載器,但請注意,它們僅用於在解析教學大綱後下載資料,例如影片、PDF、一些講義和其他文件(教學大綱始終使用內部下載器下載)。如果您在下載此類資料時遇到問題,您可能需要開始使用外部下載程式並配置其逾時值。例如,您可以透過傳遞--aria
選項來使用 aria2c 下載器:
cs-dlp --cauth-auto chrome --path . --aria2
並將其放入 aria2c 的設定檔~/.aria2/aria2.conf
中以減少逾時:
connect-timeout=2 timeout=2 bt-stop-timeout=1
不支援內部下載器的逾時配置。
如果您在代理程式後面的 Windows 上,請在執行腳本之前設定環境變量,如下所示:
set HTTP_PROXY=http://host:port set HTTPS_PROXY=http://host:port
相關討論:#205
MathJax.js
的替代 CDN儲存課程頁面時,我們透過在標頭中註入MathJax.js
來啟用數學方程式的MathJax
渲染。該腳本使用 mathjax.org 提供的 CDN 服務。但是,該 url 在某些國家/地區無法訪問,您可以提供--mathjax-cdn
參數來指定在您所在地區可以訪問的MathJax.js
檔案。
在報告任何問題之前,請按照以下步驟操作:
驗證您正在執行該腳本的最新版本
如果問題仍然存在,請隨時在我們的錯誤追蹤器中開啟問題,請在問題範本中填寫盡可能多的資訊。