Giter Site home page Giter Site logo

yliu7949 / koushare-dl Goto Github PK

View Code? Open in Web Editor NEW
873.0 2.0 21.0 484 KB

KouShare-dl 是一个用于从“蔻享学术”视频网站下载视频和课件、录制直播的命令行工具。

License: The Unlicense

Go 100.00%
koushare download-videos golang cli go

koushare-dl's Introduction

KouShare-dl logo

KouShare-dl

License Build Status Go Report Card Github Downloads Github Release Version

KouShare-dl 是一个使用 Cobra 开发的用于从 “蔻享学术” 视频网站下载视频和课件的命令行工具。

您可以在常见的操作系统(Windows,macOS 和 Linux 等)里使用该命令行工具。该工具已被发布至公有领域,因此您可以按照您的想法自由使用它,如对它进行修改、重新发布等操作。

目录

功能

它目前具有如下功能

  • 登录蔻享账户,且一周内免登录

  • 获取视频或直播的详细信息

  • 下载单个蔻享视频或整个专题的视频

  • 下载清晰度为标清、高清和超清的视频(需要登录)

  • 下载已购买且在有效期内的付费视频(需要登录)

  • 批量下载指定的视频

  • 继续上一次的视频下载

  • 定时录制直播间

  • 继续上一次的直播间录制

  • 下载直播间的快速回放🚀

  • 下载单个课件或整个专题的课件

它无法做到的事情

  • 下载未购买的付费视频

"功能支持"表格

类型 是否支持专题下载 是否支持单独下载 是否支持断点续传 是否支持不同清晰度的下载 是否支持付费产品下载
视频 ✔️ ✔️ ✔️ ✔️
直播 ✔️ ✔️
课件 ✔️ ✔️ ✔️

(✔️表示支持该功能,❌表示不支持该功能,➖表示该功能不存在,⭕表示部分支持该功能)

编译

您可以下载 Releases 中的二进制文件ks.exeks后直接使用,也可以下载源代码自行编译。

Windows

go build -o ks.exe -trimpath -ldflags "-s -w -buildid=" ks.go

Linux

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 参数。

示例

一、登录账户与注销登陆

登录蔻享账户并不是使用流程中的必须操作,但登录蔻享账户后可以下载更高清晰度的免费视频和下载已购买的付费视频,获取视频的基本信息时还可以获取到更多详细的内容。

1.1 登录蔻享账户

使用下面的命令登录蔻享账户:

ks login [phone number]

其中[phone number]参数为 11 位手机号码。该命令执行后,手机会收到 6 位短信验证码,在命令行中继续输入短信验证码后回车即可登录。登录成功后会在当前路径下生成一个用于保存登录凭证的 Token 隐藏文件,Token 有效期为一周,因此一周内无需再次登录即可保持登录状态。

重复运行该命令会自动更新登陆凭证。登录凭证过期后重新登陆即可。

1.2 注销登录状态

如果想注销登录状态,可以使用这条命令:

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 的详细使用语法,可以参考这里的描述

3.1 使用默认参数下载视频

使用save时不加任何 flag ,程序就会使用save的所有 flag 的默认值进行下载。

例如,在登录状态下要默认下载 vid 为7552的视频,可以运行下面这条命令:

  ks save 7552

该命令执行完毕后,程序所在的路径下会出现一个.mp4格式的超清视频文件,这就是下载下来的 vid 为7552的蔻享视频。

save命令的别名是video,因此ks save 7552ks video 7552的功能是相同的。

3.2 下载视频至指定文件夹

若要指定保存视频的位置,可以加上-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。

3.3 下载某个专题的所有视频

专题下载需要指定-s参数,-s--series参数是Bool型 flag,使用时无需指定具体的值。

您需要知道所要下载的专题视频中任意一个视频的 vid。以“中物院研究生院精品公开课之《高等量子力学》公开课程”专题为例,可以使用下面这条命令下载该专题的所有视频:

ks save 7304 -s

程序会使用该专题的名字创建一个文件夹用以存放下载的视频。7304是该专题第一个视频的 vid,可被替换为该专题任意视频的 vid。

若要同时指定保存视频的位置(如D:\temp\),可以运行该命令:

ks save 7552 -p D:\tmp\ -s

3.4 下载不同清晰度的视频

使用-q--quality参数来指定下载视频的清晰度。该 flag 的值只有high(超清)、standard(高清)和low(标清)三种。示例如下:

ks save 7304 -q high
ks save 7304 -q standard
ks save 7304 --quality=low

需要注意的是:

  • 非登录状态下,-q--quality参数无效。这是因为非登录状态下仅能下载标清视频。
  • 若您指定的该 flag 的值并不在以上三种值之内,程序会判定要下载的清晰度为标清。
  • 登录状态下,若您要下载的视频没有您指定的清晰度,程序会选择次于您指定清晰度的清晰度进行视频的下载。

3.5 批量下载指定的视频

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

4.1 对指定直播间进行录制

录制直播时不需要处于登录状态下。假如您想要录制房间号为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 命令。

4.2 合并录制的视频片段

在观看直播时,直播视频是以一个个小文件(即一些时长较短的视频片段)的方式传输给用户的。在上一个示例中,指定-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

4.3 下载直播间快速回放视频

示例: 使用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

5.1 下载单个课件和专题课件

下载课件时不需要处于登录状态下。假如您想要下载为 vid 为7405的视频关联的课件,可以运行该命令:

ks slide 7405

使用info命令查看 vid 为7405的视频信息,可以发现该视频的“专题”不为空,说明该视频还有其它相关视频。

假如您想下载这个专题视频的所有课件,可以使用-s参数:

ks slide 7405 -s

同样地,7405可以被替换为同专题任意视频的 vid。

5.2 优化 pdf 文件【实验性功能】

该功能当前并不稳定,不推荐使用。

如果想要使用--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

FAQ

KouShare-dl 下载视频时是并行下载吗?

不是并行下载。

下载专题视频时因网络波动导致下载中断该怎么办?

再次运行您上一次使用的下载命令,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 预览版本测试各项功能的小伙伴们。

许可证合规性

FOSSA Status

koushare-dl's People

Contributors

yliu7949 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

koushare-dl's Issues

系列下载时文件命名有bug;以及文件命名的建议

一个bug:

下载某个专题系列里面的多个视频文件时,后续文件的名字会变成前面视频名称加上该视频名称的字符串,例如:AA_超清.mp4、AA_超清BB_超清.mp4、AA_超清BB_超清CC_超清.mp4……
版本:KouShare-dl v0.9.1,windows11系统。

还有一个建议:

希望下载视频的命名可以利用视频的“报告时间”(与“发布时间”有区别),比如“2023-XX-XX 标题”,或者 “2023-XX-XX 报告人.标题”等等,可以自定义。

info命令支持查询直播信息

使用ks info [roomID]命令可以查询直播的详细信息,包括标题、直播状态、主办方、开播时间、有无回放、浏览次数、专题以及最新通知等。

自动判断直播计划并进行倒计时

如果不使用“-@, --at”标志来指定开始录制的时间,例如在 ks record 751111 -a 命令中,程序在未到开播时间时不会直接退出,而是将将根据开播时间启动倒计时功能。在倒计时结束时,程序会自动开始该直播间的录制。

手机号码格式不正确

我的手机号是191开头的,但是输入进去显示手机号码格式不正确,希望解决一下

下载视频时因源视频不存在而报错,自动跳过报错视频继续下载

例如 vid 为 21944 的视频,使用 ks info 21944 会显示体积为 0MB

可媲美脑神经元的非线性器件——高面积效率极低逻辑晶体管 (vid=21944):

        时长:Unknownmin            讲者:周鹏
        体积:0MB [标清]            单位:复旦大学
        日期:2022-01-14            专题:半语-益言系列讲座
        类别:免费视频              分组:“半语-益言”特别直播:2021年“**半导体十大研究进展”候选成果

        视频简介:(无)

使用 ks save 21944 下载视频时会 panic:

可媲美脑神经元的非线性器件——高面积效率极低逻辑晶体管    vid=21944       标清
 [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] 100%    0.00MB/0.00MB

rename ./可媲美脑神经元的非线性器件——高面积效率极低逻辑晶体管_标清.tmp ./可媲美脑神经元的非线性器件——高面积效率极低逻辑
晶体管_标清.mp4: The process cannot access the file because it is being used by another process.
panic: runtime error: invalid memory address or nil pointer dereference
        panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x40 pc=0x12cf59c]

goroutine 1 [running]:
github.com/yliu7949/KouShare-dl/video.(*Video).DownloadSingleVideo.func1()
        github.com/yliu7949/KouShare-dl/video/video.go:139 +0x1c
panic({0x131b560, 0x163a090})
        runtime/panic.go:884 +0x212
github.com/yliu7949/KouShare-dl/video.(*Video).DownloadSingleVideo(0xc0001846e0, {0x136e0b2, 0x4})
        github.com/yliu7949/KouShare-dl/video/video.go:162 +0x1464
github.com/yliu7949/KouShare-dl/cmd/ks.SaveCmd.func1(0xc0001a2600?, {0xc00005e150?, 0x1?, 0x1?})
        github.com/yliu7949/KouShare-dl/cmd/ks/commands.go:58 +0x127
github.com/spf13/cobra.(*Command).execute(0xc0001a2600, {0xc00005e120, 0x1, 0x1})
        github.com/spf13/[email protected]/command.go:920 +0x847
github.com/spf13/cobra.(*Command).ExecuteC(0xc0001a2000)
        github.com/spf13/[email protected]/command.go:1040 +0x3bd
github.com/spf13/cobra.(*Command).Execute(...)
        github.com/spf13/[email protected]/command.go:968
main.main()
        ./ks.go:34 +0x31a

同时生成了一个 0KBtmp 文件。

异常错误

panic: runtime error: slice bounds out of range [-1:]

goroutine 1 [running]:
github.com/yliu7949/KouShare-dl/live.(*Live).getNewTsURLBym3u8(0xc0000e86c0)
github.com/yliu7949/KouShare-dl/live/live.go:276 +0x13e
github.com/yliu7949/KouShare-dl/live.(*Live).recordLive(0xc0000e86c0, 0x1)
github.com/yliu7949/KouShare-dl/live/live.go:251 +0xee
github.com/yliu7949/KouShare-dl/live.(*Live).WaitAndRecordTheLive(0xc0000e86c0, {0x0?, 0x0?}, 0xcb?)
github.com/yliu7949/KouShare-dl/live/live.go:143 +0xbbd
github.com/yliu7949/KouShare-dl/cmd/ks.RecordCmd.func1(0xc000004f00?, {0xc000112180?, 0x2?, 0x2?})
github.com/yliu7949/KouShare-dl/cmd/ks/commands.go:123 +0x172
github.com/spf13/cobra.(*Command).execute(0xc000004f00, {0xc000112160, 0x2, 0x2})
github.com/spf13/[email protected]/command.go:944 +0x847
github.com/spf13/cobra.(*Command).ExecuteC(0xc000004300)
github.com/spf13/[email protected]/command.go:1068 +0x3bd
github.com/spf13/cobra.(*Command).Execute(...)
github.com/spf13/[email protected]/command.go:992
main.main()
./ks.go:34 +0x334

能不能同时下载会议的信息生成一个nfo文件?方便导入类似Jellyfin等媒体管理软件中使用。

能不能同时下载会议的信息生成一个nfo文件(最好和视频文件名一致)?方便导入类似Jellyfin、plex等媒体管理软件中使用。

jellyfin的nfo文件的一些介绍参考:https://jellyfin.org/docs/general/server/metadata/nfo/

比如以下信息:

  • 关联专题(可以定义为“合集”):[XXX](https://www.koushare.com/topic-sc/i/XXXXXXX
  • DOI:https://dx.doi.org/XXX
  • bib文件(网站上可以下载),或者GB/T 7714等引用格式
  • 报告题目:XXX
  • 报告地点:XXX
  • 报告时间:XXX
  • 主办方:XXX
  • 视频摘要:XXX
  • 报告人:XXX
  • 视频标签:XXX
  • 视频封面的图片

保存文件时允许使用vid作为前缀

save 命令新增 -v, --vidPrefix 标志,指定是否使用 vid 作为保存视频文件名的前缀。

ks save 2233 -v 命令为例,最终得到的 mp4 文件名为:2233_(Lecture44) Studying Statistical Physics Properties of Soft Matter by Molecular Simulation Methods_标清.mp4,即 vid_视频名_清晰度.mp4 的格式。

save batch 命令中也可以使用该标志。

课件pdf下载

课件pdf不是依附于视频,而是在一个单独的课程资源页面,这种情况怎么下载课件的pdf?

mac 如何用呀谢谢

win的这个步骤我知道怎么用(cd C:\Users\lenovo\Downloads
ks version),mac如何输入进入呀

info 命令增加了对需要密码的直播间的提示

有些直播间,例如 RoomID 为 283276 的直播间需要密码才能访问。执行 ks info 283276 命令会看到“该直播间需要密码”的提示:

**科学技术大学2023毕业典礼 (roomID=283276):

        直播状态:直播已结束            主办单位:**科学技术大学
        开播时间:2023-06-25 09:00:00   有无回放:[有回放]
        浏览次数:80039                 专题:(无)

        ※该直播间需要密码

        最新通知:直播结束。感谢主持人、报告人和各位老师同学的参与,更多内容请关注蔻享学术网站(www.koushare.com)、APP (蔻享学术)、公众号(蔻享学术)。

live 命令支持使用密码录制需要密码的直播间。例如:ks live 283276 --password="123456"。若密码错误,会得到“直播间密码不正确”的提示。

彩色终端输出

部分提示文字和进度条数字在各个终端下显示为彩色。使用--nocolor标志表明不使用彩色输出。

直播录制下载之后,进行合并时报错

直播录制之后进行下载(不知道是不是因为只下载了部分的原因,没有等完全下载完毕就ctrl+c终止了程序,感觉这一点是有必要的,因为有的会议是连着的,但是只想录制某个报告人的视频),最后合并的时候报错如下:

开始合并视频文件...
panic: runtime error: slice bounds out of range [-1:]

goroutine 1 [running]:
github.com/yliu7949/KouShare-dl/live.MergeTsFiles.func1({0x0?, 0xc0003c9740?}, {0x12a0d38, 0xc0003a1340}, {0xc0000695c8?, 0xf8751a?})
        github.com/yliu7949/KouShare-dl/live/live.go:309 +0x229
path/filepath.walk({0xc0003c9740, 0x2c}, {0x12a0d38, 0xc0003a1340}, 0xc000069bd0)
        path/filepath/path.go:433 +0x123
path/filepath.walk({0xc0003c8030, 0x29}, {0x12a0d38, 0xc00041e070}, 0xc000069bd0)
        path/filepath/path.go:457 +0x285
path/filepath.walk({0xc00034c600, 0x20}, {0x12a0d38, 0xc0003a1a40}, 0xc000069bd0)
        path/filepath/path.go:457 +0x285
path/filepath.walk({0xc00034d1a0, 0x1b}, {0x12a0d38, 0xc0003c1b20}, 0xc000069bd0)
        path/filepath/path.go:457 +0x285
path/filepath.walk({0xc00000f5c0, 0xd}, {0x12a0d38, 0xc00015f110}, 0xc000069bd0)
        path/filepath/path.go:457 +0x285
path/filepath.walk({0xc00000f1c0, 0x9}, {0x12a0d38, 0xc00015e1c0}, 0xc000069bd0)
        path/filepath/path.go:457 +0x285
path/filepath.walk({0x11edb0b, 0x2}, {0x12a0d38, 0xc00015e000}, 0xc000069bd0)
        path/filepath/path.go:457 +0x285
path/filepath.Walk({0x11edb0b, 0x2}, 0xc000107bd0)
        path/filepath/path.go:520 +0x6c
github.com/yliu7949/KouShare-dl/live.MergeTsFiles({0x11edb0b, 0x2}, {0xc00000e0d8, 0x8})
        github.com/yliu7949/KouShare-dl/live/live.go:305 +0x132
github.com/yliu7949/KouShare-dl/cmd/ks.MergeCmd.func1(0xc00014cc00?, {0xc0000509a0?, 0x2?, 0x2?})
        github.com/yliu7949/KouShare-dl/cmd/ks/commands.go:121 +0x116
github.com/spf13/cobra.(*Command).execute(0xc00014cc00, {0xc000050980, 0x2, 0x2})
        github.com/spf13/[email protected]/command.go:920 +0x847
github.com/spf13/cobra.(*Command).ExecuteC(0xc00014c000)
        github.com/spf13/[email protected]/command.go:1040 +0x3bd
github.com/spf13/cobra.(*Command).Execute(...)
        github.com/spf13/[email protected]/command.go:968
main.main()
        ./ks.go:34 +0x31a

系列名中有特殊符号时,创建文件夹错误

如:Lecture 1: Defect Calculation in Semiconductors: Concept, Calculation and Control 标题中使用了 :
mkdir .\Defect Calculation in Semiconductors: Concept, Calculation and Control_videos\: The directory name is invalid

程序:ks.exe
操作系统:windows
测试终端:powershell

ks clean 命令:清理指定目录下的所有 tmp 文件

新增 ks clean 命令用以清理指定目录下的所有下载过程中产生的 tmp 临时文件。

--path, -p 标志用于指定要清理的目录。--quiet, -q 标志用于指定是否在清理过程中输出已清理的文件名。

示例:ks clean -p="C:\Users\lenovo\Downloads" -q

反馈一个运行时的报错

在录制直播时出现的报错,随后程序停止了运行,报错信息如下

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x40 pc=0x55c168]

goroutine 1 [running]:
github.com/yliu7949/KouShare-dl/user.MyGetRequest({0xc00023e6c7?, 0xc000025098?}, {0x0, 0x0, 0x0?})
        github.com/yliu7949/KouShare-dl/user/user.go:177 +0x5c8
github.com/yliu7949/KouShare-dl/live.(*Live).getNewTsURLBym3u8(0xc0000fa0f0)
        github.com/yliu7949/KouShare-dl/live/live.go:207 +0x3a
github.com/yliu7949/KouShare-dl/live.(*Live).recordLive(0xc0000fa0f0, 0x0)
        github.com/yliu7949/KouShare-dl/live/live.go:188 +0x45
github.com/yliu7949/KouShare-dl/live.(*Live).WaitAndRecordTheLive(0xc0000fa0f0, {0x0?, 0x0?}, 0xb3?)
        github.com/yliu7949/KouShare-dl/live/live.go:96 +0x78b
github.com/yliu7949/KouShare-dl/cmd/ks.RecordCmd.func1(0xc0000f8900?, {0xc000072f70?, 0x1?, 0x1?})
        github.com/yliu7949/KouShare-dl/cmd/ks/commands.go:89 +0x137
github.com/spf13/cobra.(*Command).execute(0xc0000f8900, {0xc000072f40, 0x1, 0x1})
        github.com/spf13/[email protected]/command.go:920 +0x847
github.com/spf13/cobra.(*Command).ExecuteC(0xc0000f8000)
        github.com/spf13/[email protected]/command.go:1040 +0x3bd
github.com/spf13/cobra.(*Command).Execute(...)
        github.com/spf13/[email protected]/command.go:968
main.main()
        ./ks.go:34 +0x31a

随后再次执行ks record命令,报错误如下

登陆凭证有效。

Error: unknown command "PathtoKS\\ks.exe" for "ks"
Run 'ks --help' for usage.

第三次执行record命令后成功重新开始录制。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.