AutoHotkey 代码:将字幕文件时间码调整为连续时间
以下是实现字幕文件时间码连续时间的 AutoHotkey 代码:
; 设置时间码行的正则表达式规则
RegexMatch := '\d{2}:\d{2}:\d{2},\d{3} --> \d{2}:\d{2}:\d{2},\d{3}'
; 遍历每一行文本
Loop, read, Subtitles.txt
{
; 如果当前行匹配时间码规则
If RegExMatch(A_LoopReadLine, RegexMatch)
{
; 获取当前时间码的结束时间
endtime := SubStr(A_LoopReadLine, 18, 12)
}
; 如果当前行不是时间码行,但是前一行是时间码行
else If (endtime != '' && endtime != 0)
{
; 将当前行的开始时间设置为前一行的结束时间
starttime := SubStr(A_LoopReadLine, 1, 12)
newLine := starttime . ' --> ' . endtime . ',' . SubStr(A_LoopReadLine, 25)
; 将新的时间码行写入文件
FileAppend, %newLine%`n, Subtitles_New.txt
; 重置结束时间
endtime := ''
}
; 如果当前行不是时间码行,且前一行也不是时间码行
else
{
; 直接将当前行写入文件
FileAppend, %A_LoopReadLine%`n, Subtitles_New.txt
}
}
这段代码首先定义了一个正则表达式 RegexMatch 来匹配时间码行。然后,代码遍历 Subtitles.txt 文件中的每一行文本。
- 如果当前行匹配时间码规则,则提取当前时间码的结束时间
endtime。 - 如果当前行不是时间码行,但前一行是时间码行,则将当前行的开始时间设置为前一行的结束时间
endtime,生成新的时间码行并写入Subtitles_New.txt文件。 - 如果当前行不是时间码行,且前一行也不是时间码行,则直接将当前行写入
Subtitles_New.txt文件。
通过这种方式,代码实现了将当前时间码的结束时间作为下一个时间码行的结束时间,从而实现字幕文件时间码的连续时间调整。
原文地址: https://www.cveoy.top/t/topic/oMTn 著作权归作者所有。请勿转载和采集!