这是 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
文件。
在报告任何问题之前,请按照以下步骤操作:
验证您正在运行该脚本的最新版本
如果问题仍然存在,请随时在我们的错误跟踪器中打开问题,请在问题模板中填写尽可能多的信息。