为了灵活高效地浏览Coursera等MOOC平台的课程视频,我建立了一套基于python脚本的准备流程:通过coursera-dl等工具将视频保存到本地
用脚本遍历整个文件夹,记录所有视频和pdf文档的地址
修改视频的Metadata中的标题名称为 “子目录名称 + 视频名称”
把所有文件路径用natsort排序后,保存为一个M3U播放列表
用PyPDF2把所有pdf文件整合成一个带书签的pdf文档
用VLC播放器播放视频列表,调节到最佳播放速度,并就着pdf文档来学习
随着每次预备视频和文档时一点点地优化,我现在只需要点几下鼠标就能完成上述的预处理任务了。
视频本地化的好处在于,在浏览时可以不受网络速度的约束,可以任意地拖动进度条,可以全程最大化视频窗口,可随时在pdf讲义和视频间快速切换,可加速视频,也不会受弹出的Quiz打扰,刷课效率质量都大大提升。
下面我来分享几个在编写脚本时,遇到的问题,以及我是如何解决的:
1. coursera-dl验证失败
从截图可以看到coursera-dl当下的脚本维护状况不是太妙 ,用它来下载课程时,十有八九会报出如下错误:“HTTPError: 400 Client Error: Bad Request for url: https://api.coursera.org/api/login/v3”
但是经过一番研究调查,我发现还是能够正常的使用的。由于Coursera增加了reCAPTCHA验证,仅用户名+密码已经很难直接成功登陆了。我们还需要从浏览器里找到登录coursera时的CAUTH信息,并把它填写仅命令行中去。https://github.com/coursera-dl/coursera-dl/issues/702#issuecomment-568228372
2. 文件名排序问题
通过下载工具得到的视频名称一般都已经带有前缀数字。coursera-dl下载下来的文件前缀数字是有零填充的,因此排序后不会乱。但是,比如像Udeler这样的Udemy平台下载器得到的文件前缀数字并未进行零填充,这就导致编号10、11、12...会排在编号2之前。
Python的处理办法也很简单,使用natsort库来排序就能得到理想的顺序了。
3. VLC不支持M3U播放列表中的中文视频路径
VLC在读取M3U中的视频路径时,会人工智障,读不了Unicode特殊字符。今天终于在论坛上看到了解决方法,那就是把文件路径记录成以百分号编码的url格式,如:file:///H:/MOOC/Coursera/%E3%80%90%E5%90%88%E9%9B%86%E3%80%91%E5%95%86%E4%B8%9A/%5BSpecialization%5D%20Business%20Foundations%20%28Wharton%29/Introduction%20to%20Operations%20Management/01_introduction/01_module-1-introduction/01_course-logistics.mp4
这样的话,VLC就能够顺利地读取M3U中的带中文路径的视频了!
经过这样一番折腾,上述的流程已经基本上满足了我的使用需求。如果你有什么相关的好点子,欢迎留言分享。