前言
家里也没有用有线电视机顶盒了。只能播放一些本地视频了。
再加上小孩子现在正在放暑假,所以想搞些学习视频给他看一下。
正好有国家中小学智慧教育平台,里面的同步课程视频都是可以免费看的。
所以我打算把他全部下载到U盘里在电视机上播放。
开始
但是一个学期不只有一门课,就算只下语文数学的话,那一天时间就全完在这上面了。
这到还不是重点,重点是一天都在做重复的劳动
打开一个课程,然后找到视频下载地址,然后用下载工具把视频下载下来。
重复这个动作大约百来次,每次要等个几分钟下载。
做为一个程序员的我,这个是接受不了的。
所以我就打算写个程序,可以批量把所有视频批量下载。
分析视频下载地址
https://s-file-1.ykt.cbern.com.cn/zxx/s_course/v1/x_class_hour_activity/89306b9d-db26-4db5-9f39-54865d43314b/resources.json
返回的内容为视频的下载地址
如果我要批量下载的话。那么我就要找到当前学科的所有课程Id
这样的话,我就能找到所有的视频地址
于是,我又在网络请求里找到了一个这样的地址
https://s-file-1.ykt.cbern.com.cn/zxx/s_course/v2/activity_sets/75f96245-8136-457e-b8dd-626fe960d131/fulls.json
这个地址返回的是当前课程的所有信息,所以通过这个就可以找到一门课程的所有视频Id了
我只要找到这个课程的目录把对应的课程信息fulls.json拿到
就可以找到所有视频的Id,然后通过每个视频Id去请求对应视频的resources.json
就可以拿到所有的视频地址了。
下载视频
https://r3-ndr.ykt.cbern.com.cn/edu_product/65/video/17b72ffb547a11eb96b8fa20200c3759/5bf35e06793611b4383bdf3bf9b550ea.1280.720.false/5bf35e06793611b4383bdf3bf9b550ea.1280.720.m3u8
像这样的m3u8格式地址。这样的地址并不能下载为完整的mp4格式视频
因为m3u8是视频的分片格式,把一个视频文件分片了很多小片段,
片段内容记录到了m3u8文件里,所以我们要把m3u8里的每一个分片都下载下来,
然后再合成一个mp4文件
所以我们就请出了在GitHub上最火的m3u8视频下载器
https://github.com/nilaoda/N_m3u8DL-CLI
通过这个工具只要传一个m3u8地址,他就会自动帮你下载所有分片
最后合成一个mp4视频。
One More Time
那进一步是不是可以把所有课程信息都拿下来,是不是就可以下载全部视频了。
所以通过分析,我们又发现了一个牛B接口
https://s-file-1.ykt.cbern.com.cn/zxx/api_static/tag_views/trees/sync-course.json
通过这个接口,我们可以知道所有学段、年级、学科、版本、册次信息
这样我们就可以知道所有课程了。
结束
第一步选择要下载的课程
并按对应的学科、单元、课程创建对应的视频目录与文件
就可以保存到U盘,放到我的老电视机上播放了。