解析youtube字幕
许多人平时在浏览youtube视频时都有进行下载字幕的需要。用户都是会通过一些技巧来帮助进行下载来进行解析。
解析youtube网站字幕
用户在观看youtube视频的时候,经常有下载字幕的需求,正常情况下,人们会运用一些浏览器插件来相助进行下载,然而这些插件时常会出现失效现象,又要重新去找其他的插件,非常浪费时间。做为一个程序员,自己来实现一个解析字幕的小程序还是不算太难,用户可以用底下解析youtube网站字幕。

解析youtube字幕如何操作
第1步.用户需要找到视频对应的字幕
用户需要打开控制台
1.用户需要选择 Network
2.用户需要进入XHR
3.用户需要点击 timedtext 那一条
4.用户需要点击右边 Response
这样就能够找到字幕文件了,把字幕复制到一个文件中,例如subtitle.json。
第2步.解析 json
a. json 格式分析
json 的格式是这样的
用户需要的就是里面的 events 对象,events 是一个数组对象,每一条对应一条字幕,里面含有字幕开始时间,时长跟内容。熟悉字幕的同学都晓得字幕的格式
1 序号
00:00:10,120 –> 00:00:13,840 时间
All of us, from a very early age 字幕内容
空行
紧接着必须解决的就是把 json 中的 events 转换成字幕格式,继而输出到一个文件中,比如subtitle.srt。
处理思路:
字幕中的序号对应 events 数组的 index
开始时间对应 tStartMs 的值
结束时间对应 tStartMs + dDurationMs 的值
内容对应 segs 中的第一个元素
b. 具体实现
因为在这里用的是 node.js 来解决文件,所以需要安装 node.js,安装方法这里就不具体说明了,网上有许多教程。
1.引入 fs 模块
var fs = require(‘fs’)
2.处理 json
fs.readFile(sourcePath, ‘utf8’, function (err, data) {
if (err) console.log(err);
var test1 = JSON.parse(data);//读取的值
// console.log(test1.events)
subtitle = test1.events
// 下面写入文件使用的是追加,因此用户在写之前若是文件已经存在的话就清空一下。
// 预防执行多次后文件内的重复内容太多,重点是在调试的时候或许会忘记,继而就或许存在懵的状态。
if (fs.existsSync(resultPath)) {
fs.writeFileSync(resultPath,”)
}
for (let i = 0; i << span=””> subtitle.length; i++) {
const s = subtitle[i];
// console.log(s.segs[0].utf8) //字幕内容
// i :字幕的位置
// console.log(s.tStartMs) 起始时间
// console.log(s.tStartMs + s.dDurationMs) 结束时间
// 字幕格式
// 1
// 00:00:09,779 –> 00:00:15,899
// 内容
// 空行
// 这个是生成标准的字幕文件
if(isTime){
fs.appendFileSync(resultPath,i + ‘\n’ + convertTime(s.tStartMs) + ‘ –> ‘ + convertTime(s.tStartMs + s.dDurationMs)
+ ‘\n’ + s.segs[0].utf8 + ‘\n\n’,err => {
if(err){
console.log(err)
}
})
}else{ // 这个是生成纯文本内容,不带时间轴和序号
fs.appendFileSync(resultPath,s.segs[0].utf8 + ‘\n\n’,err => {
if(err){
console.log(err)
}
})
}
}
});
c. 处理时间的方法
function convertTime(time) {
var s, m, h
h = Math.floor(time / 1000 / 60 / 60)
console.log(‘h:’ + h)
m = Math.floor(((time / 1000 / 60 / 60) % 1) * 60)
// console.log(‘m:’ + m)
s = ((((time / 1000 / 60 / 60) % 1) * 60) % 1) * 60// 通过跟 1 取余获取小数部分
s = s.toFixed(3)
s = s.toString().replace(‘.’, ‘,’).substring(0, 6)
console.log(‘s:’ + s)
if (h << span=””> 10) {
h = ‘0’ + h
}
if (m << span=””> 10) {
m = ‘0’ + m
}
var timeString = h + ‘:’ + m + ‘:’ + s
// console.log(timeString)
return timeString
}
d. 运行脚本在终端输入
node parse_subtitle.js
e.当前目录下就会生成相应的字幕文件
以上是关于解析youtube字幕的操作流程等相关信息,在这里提供给各位进行实践收看。
youtube字幕,youtube应用,youtube用户,youtube视频,youtube