AutoHotkey 代码:自动调整字幕时间码
以下是实现以上功能的 AutoHotkey 代码:
#SingleInstance force
; 设置热键 Ctrl+Shift+T,用于处理字幕文件
^+T::
; 获取当前剪贴板中的文本
Clipboard := ""
SendInput, ^c
ClipWait, 1
; 如果剪贴板中没有文本,则提示并退出
if (Clipboard = "")
{
MsgBox, 剪贴板中没有文本!
return
}
; 以换行符为分隔符,将剪贴板中的文本分割成数组
lines := StrSplit(Clipboard, `n`)
; 遍历数组,处理时间码
for index, line in lines
{
; 如果当前行是时间码行
if (RegExMatch(line, "\d+:\d+:\d+,\d+ --> \d+:\d+:\d+,\d+"))
{
; 如果不是第一行,则将上一行的结束时间设置为当前行的开始时间
if (index > 1)
{
lines[index - 1] := RegExReplace(lines[index - 1], "\d+:\d+:\d+,\d+", RegExReplace(line, "(\d+:\d+:\d+,\d+) --> \d+:\d+:\d+,\d+", "$1"))
}
}
}
; 将处理后的文本写回剪贴板
Clipboard := lines.Join(`n`)
SendInput, ^v
return
使用方法:
- 将上述代码复制到 AutoHotkey 的脚本文件中,并保存;
- 运行 AutoHotkey 脚本;
- 将带时间码的字幕文本复制到剪贴板中;
- 按下 Ctrl+Shift+T 热键,等待程序处理并将结果写回剪贴板;
- 将处理后的文本粘贴到需要的地方。
原文地址: https://www.cveoy.top/t/topic/oM0K 著作权归作者所有。请勿转载和采集!