如何用Javascript读取并解析srt字幕文件?

THW*_* 10 4 javascript subtitle electron

我正在尝试制作一个程序来翻译给定路径的字幕文件。该程序在电子内部运行 - 所以我可以访问计算机的文件。问题是我找不到有关如何读取和解析 srt 文件的解释,这可能吗?

    function translateSubs(path, newPath){
      var srt = readFile(path)
      var translatedOutput = []
      srt.data.foreach(line => {
        line.text = translateToEnglishline.text()
      })
      parseFile(srt, newPath)
    }
Run Code Online (Sandbox Code Playgroud)

THW*_* 10 5

所以我就是这样做的:

var { default: srtParser2} = require('srt-parser-2');
var parser = new srtParser2()
const fs = require('fs');
//srt => json
fs.readFile(path,(err,data) =>{
  if (err) {
    console.error(err);
    return;
  }
  var subObj = parser.fromSrt(data.toString())
  console.log("lines in srt:", subObj.length)
  //json => srt
  outputSrt = ""
  subObj.forEach(item =>{
    translatedSub += "\n" + item.id + "\n"+ item.startTime + " --> " + item.endTime + "\n" + item.text + "\n" 
  })
  fs.writeFile(outputPath, outputSrt, (err) => {console.log(err)})
  console.log("wrote file into path:", outputPath)
})
Run Code Online (Sandbox Code Playgroud)

读取 srt:首先,我们使用 FS 读取 srt,然后将输出转换为字符串并使用 srt-parser-2 读取它,这会为我们提供 JSON 格式的 srt

创建 Srt:我们创建具有以下格式的新字符串:

1
00:00:11,544 --> 00:00:12,682
Hello

2
00:00:17,123 --> 00:00:19,345
There

3
00:00:30,123 --> 00:00:31,345
General Kenobi
Run Code Online (Sandbox Code Playgroud)

然后我们将其写入文件。

有关更多信息,您可以在此处查看 srt-parser-2 文档: https: //www.npmjs.com/package/srt-parser-2