最近上课需要做笔记,但是,一句句的抄字幕工作量有点大,于是查找了一此方法,尝试成功,在此记录下下:
1、首先,打开你所要下载字幕的视频,如 https://www.icourse163.org/learn/NUDT-1003101005?tid=1003312002#/learn/content?type=detail&id=1004836185&sm=1
2、在当前页面按F12键,然后点击network,接着按ctrl+F会出来一个搜索框,然后在当前页面按F5刷新该页面(也可以点击浏览器的刷新按钮)
3、在搜索框中输入:downloadVideoSrt.htm,进行搜索,会得到如下结果,双击搜索到的链接,右边会显示一条黄色代码,复制url后的地址到浏览器中即可下载该视频的字幕文件,一般为txt文件。
4、得到字幕之后,将其重命名为如下格式:
例如,将(2)所示课程对应的字幕文件重命名为3-3-1.txt,表示第3讲第3小节的第一个视频字幕文件(本小节共有2个视频),字幕内容如右所示,接下来我将用python提取其中的字幕,去掉其他部分。具体程序如下:
import re
jiang = 3 # 定义是第几讲
xiaojie = 1 # 定义是第几小节课
fileNum = 2 # 定义本节共有几个视频文件,将这些文件中的字幕提取到一起
resultContent = "第"+str(jiang)+"讲-第"+str(xiaojie)+"节\n"
newFile = "E:\\new\\第" + str(jiang) + "讲-第" + str(xiaojie) + "节字幕.txt"
print(newFile)
fnew = open(newFile, "w+", encoding="utf-8")
for i in range(1, fileNum+1):
fileName = str(jiang)+"-"+str(xiaojie)+"-"+str(i)+".txt"
oldfile = "E:\\source\\" + fileName
f = open(oldfile,encoding="utf-8")
line = f.readline()
fileContent = ""
while(line):
try: # 如果本行只有数字,则跳过本行,继续处理一下行
int(line)
line = f.readline()
continue
except ValueError:
pass
line = re.sub(r'\d{2}:\d{2}:\d{2},\d+', '', line)
# line= re.sub(r'\d+\n', '', line)
line = line.replace("-->", "").replace("\n", "")
fileContent = fileContent + line
line = f.readline()
resultContent = resultContent + fileContent + "\n\n"
print("resultContent" + resultContent)
fnew.write(resultContent)
f.close()
fnew.close()
简单处理后的结果如下:
同时会将每一小节的输出内容写入txt文档中,保存在E:\new路径(也可以另外指定其他路径)下,然后将本讲的所有小节内容手动将其复制到word中(因为python自动生成wrod文档的话会出现格式问题)。
若在下有可以帮到的地方或您有更好的优化方法,欢迎留言建议。