LinkedIn Learning 字幕中文翻译脚本
< 脚本LinkedIn Learning 字幕中文翻译的反馈
字幕下载功能我之后有空了加一下吧🌝
暂时的话视频和字幕可以用这个工具下载 r0oth3x49/lynda-dl
字幕翻译的话需要对 _extract.py
稍作修改,这是一个比较粗糙的实现:
# 添加两个方法并修改 _fix_subtitles 方法
def _fix_subtitles(self, subs):
srt = ''
seq_counter = 0
t = []
i = 0
for pos in range(0, len(subs) - 1):
seq_current = subs[pos]
text = seq_current['Caption'].strip()
if text:
i += 1
text = re.sub(r'\r?\n|\r', ' ', text).strip()
t.append(text)
r = self._translate('\n'.join(t)).strip().split('\n')
for pos in range(0, len(subs) - 1):
seq_current = subs[pos]
m_current = re.match(self._TIMECODE_REGEX, seq_current['Timecode'])
if m_current is None:
continue
seq_next = subs[pos + 1]
m_next = re.match(self._TIMECODE_REGEX, seq_next['Timecode'])
if m_next is None:
continue
appear_time = m_current.group('timecode')
disappear_time = m_next.group('timecode')
text = seq_current['Caption'].strip()
if text:
seq_counter += 1
text = re.sub(r'\r?\n|\r', ' ', text).strip()
srt += '%s\r\n%s --> %s\r\n%s\r\n%s\r\n\r\n' % (seq_counter, appear_time, disappear_time, r[seq_counter], text)
if srt:
return srt
def _translate(self, text):
textArr = ['']
resArr = ['']
if(len(text) > 5000):
strArr = text.split("\n")
i = 0
for str in strArr:
textArr[i] = textArr[i] or ''
if(len(textArr[i] + str) > (i + 1) * 5000):
i=i+1
textArr.append('')
textArr[i] += str + "\n"
else:
textArr[0] = text
for en in textArr:
resArr.append(self._caiyun(en))
result = '\n'.join(resArr)
return result
def _caiyun(self, text):
data = json.dumps({
"source": text.split("\n"),
"trans_type": "en2zh",
"request_id": "web_fanyi",
"media": "text",
"os_type": "web",
"dict": 1,
"cached": 1,
"replaced": 1
})
headers = {
"accept": "application/json",
"content-type": "application/json; charset=UTF-8",
"X-Authorization": "token:cy4fgbil24jucmh8jfr5"
}
r = requests.post("https://api.interpreter.caiyunai.com/v1/translator", headers=headers, data=data)
result = json.loads(r.text)
return "\n".join(result['target'])
字幕下载功能已在 0.3.0 版本中加入
感谢@journey_ad 这么快就实现了下载功能! 使用中发现一个小问题,下载的字幕文件中的时间格式有误,秒后边应该是逗号而不是句号 如应该是00:00:00,006 --> 00:00:01,005,现在是00:00:00.06 --> 00:00:01.05 否则播放器不认 望能修复,谢谢!
0.3.2 版本中修复了时间格式
逗号的问题修复了,不过怪我疏忽,还有一个格式问题上次没发现,就是秒的小数位应该是3位而不是2位,否则播放器还是不认 :p
什么播放器,这么严格的🌝
@journey_ad 说道: 0.3.2 版本中修复了时间格式
大佬你好哇,非常感谢你的脚本啊。非常非常非常好用。
@journey_ad 说道: 什么播放器,这么严格的🌝
Mac平台的movist,其他播放器还没试过
因为从上一个版本开始,插件在我这里就不能正常运行了,这个问题我另开一帖吧
macOS 推荐使用 IINA
@journey_ad 说道: macOS 推荐使用 IINA
好的,谢谢!
有没有可能导出字幕文件供离线使用
脚本当前已经非常好用,感谢开发付出的辛苦! 国内访问lynda的速度不稳定,慢的时候很卡。希望脚本未来能够支持翻译后的字幕下载,这样就能供视频下载后离线使用了。 期待越来越好。