KouShare-dl 是一个使用 Cobra 开发的用于从 “蔻享学术” 视频网站下载视频和课件的命令行工具。
您可以在常见的操作系统(Windows,macOS 和 Linux 等)里使用该命令行工具。该工具已被发布至公有领域,因此您可以按照您的想法自由使用它,如对它进行修改、重新发布等操作。
-
登录蔻享账户,且一周内免登录
-
获取视频或直播的详细信息
-
下载单个蔻享视频或整个专题的视频
-
下载清晰度为标清、高清和超清的视频(需要登录)
-
下载已购买且在有效期内的付费视频(需要登录)
-
批量下载指定的视频
-
继续上一次的视频下载
-
定时录制直播间
-
继续上一次的直播间录制
-
下载直播间的快速回放🚀
-
下载单个课件或整个专题的课件
- 下载未购买的付费视频
类型 | 是否支持专题下载 | 是否支持单独下载 | 是否支持断点续传 | 是否支持不同清晰度的下载 | 是否支持付费产品下载 |
---|---|---|---|---|---|
视频 | ✔️ | ✔️ | ✔️ | ✔️ | ⭕ |
直播 | ➖ | ✔️ | ✔️ | ❌ | ➖ |
课件 | ✔️ | ✔️ | ❌ | ➖ | ✔️ |
(✔️表示支持该功能,❌表示不支持该功能,➖表示该功能不存在,⭕表示部分支持该功能)
您可以下载 Releases
中的二进制文件ks.exe
或ks
后直接使用,也可以下载源代码自行编译。
go build -o ks.exe -trimpath -ldflags "-s -w -buildid=" ks.go
go build -o ks -trimpath -ldflags "-s -w -buildid=" ks.go
您需要通过命令行或终端进入该程序所在的文件夹,才能执行相关命令。
以Windows
平台为例,若可执行程序ks.exe
位于C:\Users\lenovo\Downloads\
路径下,您每次使用时需要通过快捷键Win
+R
打开“运行”对话框,输入CMD
后回车打开命令行窗口。在命令行窗口中输入以下命令:
cd C:\Users\lenovo\Downloads\
ks version
若出现KouShare-dl v0.9.1
字样,则说明可以正常使用。接下来您可以继续输入 KouShare-dl 程序的命令来进行交互。比如,输入ks help
并回车,您就可以看到 KouShare-dl 程序的帮助信息了。
KouShare-dl 程序的命令具有下面的格式:
ks [command] <flag>
其中[command]
为必选命令,<flag>
为可选参数。
可使用的 command 命令:
clean 清除指定目录下的所有tmp临时文件
help 查看某个具体命令的更多帮助信息
info 获取视频或直播的基本信息
login 通过短信验证码获取“蔻享学术”登陆凭证
logout 退出登陆
merge 合并下载的视频片段文件
record 录制指定直播间ID的直播,命令别名为live
save 保存指定vid的视频(vid为视频网址里最后面的一串数字),命令别名为video
slide 下载指定vid的视频对应的课件
upgrade 升级为最新版本
version 输出版本号,并检查最新版本
可使用的 flag 参数:
-@, --at 指定时间,格式为"2006-01-02 15:04:05"
-a, --autoMerge 指定是否自动合并下载的视频片段文件
-h, --help 查看帮助信息
-n, --name 指定输出文件的名字
--password 指定直播间密码
-p, --path 指定保存文件的路径(若不指定,则默认为该程序当前所在的路径)
-p, --path 指定清理临时文件的路径(若不指定,则默认为该程序当前所在的路径)
-P, --proxy 指定使用的http/https/socks5代理服务地址
-q, --quality 指定下载视频的清晰度(high为超清,standard为高清,low为标清,不指定则默认为超清)
-q, --quiet 指定是否不输出清理过程中的信息
--qpdf-bin 指定qpdf的bin文件夹所在的路径(注:该flag无简写形式)
-r, --replay 指定是否下载直播间快速回放视频
-s, --series 指定是否下载整个专题的文件
--nocolor 指定是否不使用彩色输出
-v, --version 查看版本号
-v, --vidPrefix 指定是否使用vid作为保存视频文件名的前缀
需要注意的是,对于每个 command 命令,仅有部分 flag 参数是可用且有效的。可以通过ks help [command]
来查看某个命令的详细描述及其可用的 flag 参数。
登录蔻享账户并不是使用流程中的必须操作,但登录蔻享账户后可以下载更高清晰度的免费视频和下载已购买的付费视频,获取视频的基本信息时还可以获取到更多详细的内容。
使用下面的命令登录蔻享账户:
ks login [phone number]
其中[phone number]
参数为 11 位手机号码。该命令执行后,手机会收到 6 位短信验证码,在命令行中继续输入短信验证码后回车即可登录。登录成功后会在当前路径下生成一个用于保存登录凭证的 Token 隐藏文件,Token 有效期为一周,因此一周内无需再次登录即可保持登录状态。
重复运行该命令会自动更新登陆凭证。登录凭证过期后重新登陆即可。
如果想注销登录状态,可以使用这条命令:
ks logout
手动删除程序所在路径下的.token
文件与该命令的执行效果相同。
查看视频信息使用ks info [vid]
命令。info
命令没有 flag 。
执行该命令后会返回指定 vid 的视频的详细信息,包括标题、讲者、单位、日期、时长、体积、类别、专题、分组以及视频简介等。
几点说明:
-
非登录状态下,“体积”仅展示标清清晰度下的视频大小;登录状态下,“体积”展示最高清晰度下的视频大小。
-
若“体积”为
0MB [未知]
,则说明该视频是未购买的(或未在购买有效期内的)付费视频,此时 KouShare-dl 无法获取该视频的体积信息。 -
若“专题”不为空,说明该视频是属于某个专题的视频,比如某精品公开课中的一节课。
您可以试一试下面的例子:
ks info 7304
建议下载视频和课件前使用info
命令确认视频的信息是否正确。
查看直播信息使用ks info [roomID]
命令。执行该命令后会返回指定 roomID 的直播间的详细信息,包括标题、直播状态、主办方、开播时间、有无回放、浏览次数、专题以及最新通知等。
您可以试一试下面的例子:
ks info 341215
建议录制直播和下载快速回放前使用info
命令确认直播的信息是否正确。
每个蔻享学术视频都有唯一对应的 id,即 vid。 在蔻享学术网站进入某个视频的播放页面后,该页面网址的最后的数字部分即为该视频的 vid。例如,在下面的网址中,7412
是该视频的 vid。
https://www.koushare.com/video/videodetail/7412
下载视频使用ks save [vid] <flags>
命令。与save
对应的 flag 有三个:
简写形式 | 完整形式 | 说明 | 类型 | 默认值 |
---|---|---|---|---|
-p |
--path |
指定保存视频的路径 | String |
当前所在路径 |
-q |
--quality |
指定下载视频的清晰度 | String |
超清 |
-s |
--series |
指定是否下载专题视频 | Bool |
否 |
-v |
--vidPrefix |
指定是否使用vid作为文件名前缀 | Bool |
否 |
多个 flag 可以不分顺序地叠加使用,但Bool
类型的 flag 宜放在最后使用。关于命令中 flag 的详细使用语法,可以参考这里的描述。
使用save
时不加任何 flag ,程序就会使用save
的所有 flag 的默认值进行下载。
例如,在登录状态下要默认下载 vid 为7552
的视频,可以运行下面这条命令:
ks save 7552
该命令执行完毕后,程序所在的路径下会出现一个.mp4
格式的超清视频文件,这就是下载下来的 vid 为7552
的蔻享视频。
save
命令的别名是video
,因此ks save 7552
和ks video 7552
的功能是相同的。
若要指定保存视频的位置,可以加上-p
参数,并为其指定一个新值(如D:\temp\
)以覆盖默认值(当前所在路径),如下所示:
ks save 7552 -p D:\temp\
这里的-p
是--path
的简写形式,而-p D:\temp\
与--path=D:\temp\
是等价的,因此上一条命令也可以等价地修改为:
ks save 7552 --path=D:\temp\
若指定的文件夹不存在,程序会创建该文件夹以保存视频。若遇到Access is denied
的错误提示,则说明权限不足,此时您需要使用更高的权限来运行 KouShare-dl。
专题下载需要指定-s
参数,-s
或--series
参数是Bool
型 flag,使用时无需指定具体的值。
您需要知道所要下载的专题视频中任意一个视频的 vid。以“中物院研究生院精品公开课之《高等量子力学》公开课程”专题为例,可以使用下面这条命令下载该专题的所有视频:
ks save 7304 -s
程序会使用该专题的名字创建一个文件夹用以存放下载的视频。7304
是该专题第一个视频的 vid,可被替换为该专题任意视频的 vid。
若要同时指定保存视频的位置(如D:\temp\
),可以运行该命令:
ks save 7552 -p D:\tmp\ -s
使用-q
或--quality
参数来指定下载视频的清晰度。该 flag 的值只有high
(超清)、standard
(高清)和low
(标清)三种。示例如下:
ks save 7304 -q high
ks save 7304 -q standard
ks save 7304 --quality=low
需要注意的是:
- 非登录状态下,
-q
和--quality
参数无效。这是因为非登录状态下仅能下载标清视频。 - 若您指定的该 flag 的值并不在以上三种值之内,程序会判定要下载的清晰度为标清。
- 登录状态下,若您要下载的视频没有您指定的清晰度,程序会选择次于您指定清晰度的清晰度进行视频的下载。
save
命令的子命令 batch
可用于自定义批量下载指定 vid 的视频,格式如下:
ks save batch [vid1,vid2,vid3,...] <flag>
例如:
ks save batch [2233,59119,58206] -p="C:\Users\lenovo\Downloads" -v
KouShare-dl 会按顺序下载指定 vid 的视频。
每个蔻享直播间都有唯一对应的 id,即 roomID。 在蔻享学术网站进入某个直播间的页面后,该页面网址的最后的数字部分即为该直播间的房间号。例如,在下面的网址中,676216
是该直播间的 roomID。
https://www.koushare.com/lives/room/676216
录制直播使用ks record [roomID] <flags>
命令。与record
对应的 flag 有三个:
简写形式 | 完整形式 | 说明 | 类型 | 默认值 |
---|---|---|---|---|
-@ |
--at |
开播时间,格式为"2006-01-02 15:04:05" | String |
立即开始录制 |
-a |
--autoMerge |
指定是否自动合并下载的视频片段文件 | Bool |
否 |
-p |
--path |
指定保存录制视频的路径 | String |
当前所在路径 |
-r |
--replay |
指定是否下载直播间快速回放视频 | Bool |
否 |
--password |
指定直播间密码 | String |
合并下载的.ts
视频片段使用ks merge <directory> <flags>
命令。与merge
对应的 flag 有一个:
简写形式 | 完整形式 | 说明 | 类型 | 默认值 |
---|---|---|---|---|
-n |
--name |
指定合并后文件的名字,格式xxx.ts |
String |
recorded Video File.ts |
录制直播时不需要处于登录状态下。假如您想要录制房间号为751111
的直播间,可以运行该命令:
ks record 751111 -a
执行命令后程序会立即开始录制。但如果此时尚未开播,您会收到“直播尚未开始”的提示,随后程序会自动倒计时至开播时间,倒计时结束后将自动开始录制。除了录制直播外,该命令也可用于查看回放视频是否上线等信息。
record
命令的别名是live
,所以ks record 751111 -a
和ks live 751111 -a
的功能是相同的。
如果直播尚未开始,但您知道准确的开播时间,那么可以用-@
参数指定开播时间,如:
ks record 751111 -@="2021-07-15 18:30:00" -a
运行这条命令后会立即启动倒计时,到指定的开播时间后 KouShare-dl 会以1080p
的清晰度自动开始录制直播,直播结束时会自动停止录制。
注:若到指定的开播时间后直播间仍未开播,程序会自动退出。
若某个直播间需要密码才能访问,则需要使用 --password
标志指定正确的访问密码后才能对该直播间使用 record
命令。
在观看直播时,直播视频是以一个个小文件(即一些时长较短的视频片段)的方式传输给用户的。在上一个示例中,指定-a
参数后,KouShare-dl 会自动合并下载的直播视频片段为一个.ts
文件(一种视频文件,可被视频播放器直接播放)。
有时直播时间过长,自动合并后得到的文件体积较大,不便于传输,可以在录制直播时不指定-a
参数,这样下载下来的直播片段不会自动合并。您可以在传输后使用merge
命令手动合并.ts
视频片段:
ks merge <directory> <flags>
其中<directory>
参数为存放视频片段文件的文件夹的路径,若为空则默认为程序当前所在路径。
示例如下:
ks merge
ks merge D:\temp\直播录制 -n 课程.ts
ks merge -n output.ts
示例: 使用ks live 447482
命令得到“快速回放视频已上线”的信息:
$ ks live 447482
直播已结束。快速回放视频已上线,访问 https://www.koushare.com/lives/room/447482 观看快速回放或使用“ks record 447482 --replay”命令下载快速回放视频。
使用ks live 447482 -r
或ks record 447482 --replay
命令即可下载快速回放视频:
$ ks live 447482 -r
开始下载快速回放视频...
2126692489_2083434824_1.ts?start=0 ...
2126692489_2083434824_1.ts?start=1752160 ...
2126692489_2083434824_1.ts?start=3504696 ...
...
快速回放视频下载完成。
可使用-p
指定保存快速回放视频的路径,如:
ks live 447482 -r -p "C:\Users\lenovo\Desktop"
ks live 447482 -r --path="C:\Users\lenovo\Desktop"
下载课件使用ks slide [vid] <flags>
命令。与slide
对应的 flag 有三个:
简写形式 | 完整形式 | 说明 | 类型 | 默认值 |
---|---|---|---|---|
-p |
--path |
指定保存课件的路径 | String |
当前所在路径 |
无 | --qpdf-bin |
指定qpdf的bin文件夹所在的路径 | String |
不使用qpdf |
-s |
--series |
指定是否下载整个专题的所有课件 | Bool |
否 |
下载课件时不需要处于登录状态下。假如您想要下载为 vid 为7405
的视频关联的课件,可以运行该命令:
ks slide 7405
使用info
命令查看 vid 为7405
的视频信息,可以发现该视频的“专题”不为空,说明该视频还有其它相关视频。
假如您想下载这个专题视频的所有课件,可以使用-s
参数:
ks slide 7405 -s
同样地,7405
可以被替换为同专题任意视频的 vid。
该功能当前并不稳定,不推荐使用。
如果想要使用--qpdf-bin
标志,需先下载 qpdf包 并进行解压操作,然后在命令行或终端中指定 qpdf 包的 bin 文件夹所在的路径,如:
ks slide 7405 --qpdf-bin=C:\Downloads\qpdf-10.1.0\bin\
使用 ks clean
命令可以清理当前目录或指定路径下的所有下载过程中产生的 tmp
文件。与 clean
对应的 flag 有两个:
简写形式 | 完整形式 | 说明 | 类型 | 默认值 |
---|---|---|---|---|
-p |
--path |
指定清理临时文件的路径 | String |
当前所在路径 |
-q |
--quiet |
指定是否不输出清理过程中的信息 | Bool |
否 |
不是并行下载。
再次运行您上一次使用的下载命令,KouShare-dl 会自动跳过已下载完成的视频,并继续完成您的下载。 录制直播意外中断时同理。
错误信息通常为:rename 文件名.tmp 文件名.mp4: The process cannot access the file because it is being used by another process.
您可以耐心等待至下载结束后,手动将重命名失败的.tmp
文件的后缀改为.mp4
;或者重新运行您上一次使用的下载命令,KouShare-dl 会再次尝试重命名这些.tmp
文件。
特别感谢 JetBrains 提供的 GoLand 等 IDE 的授权。 特别感谢为 KouShare-dl 预览版本测试各项功能的小伙伴们。