Witaj, nieznajomy!

Wygląda na to, że jesteś tutaj nowy. Jeśli chcesz wziąć udział, należy kliknąć jeden z tych przycisków!

有没有可能导出字幕文件供离线使用

About: lynda.com 字幕翻译

脚本当前已经非常好用,感谢开发付出的辛苦!
国内访问lynda的速度不稳定,慢的时候很卡。希望脚本未来能够支持翻译后的字幕下载,这样就能供视频下载后离线使用了。
期待越来越好。

Komentarz

  • edytowano 22 March [?]

    字幕下载功能我之后有空了加一下吧🌝

    暂时的话视频和字幕可以用这个工具下载 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 版本中加入

  • edytowano 1 April [?]

    感谢@journey_ad 这么快就实现了下载功能!
    使用中发现一个小问题,下载的字幕文件中的时间格式有误,秒后边应该是逗号而不是句号
    如应该是00:00:00,006 --> 00:00:01,005,现在是00:00:00.06 --> 00:00:01.05
    否则播放器不认
    望能修复,谢谢!

  • 0.3.2 版本中修复了时间格式

  • 逗号的问题修复了,不过怪我疏忽,还有一个格式问题上次没发现,就是秒的小数位应该是3位而不是2位,否则播放器还是不认 :p

  • 什么播放器,这么严格的🌝

  • edytowano 4 April [?]

    @journey_ad 说道:
    0.3.2 版本中修复了时间格式

    大佬你好哇,非常感谢你的脚本啊。非常非常非常好用。

  • @journey_ad 说道:
    什么播放器,这么严格的🌝

    Mac平台的movist,其他播放器还没试过

    因为从上一个版本开始,插件在我这里就不能正常运行了,这个问题我另开一帖吧

  • macOS 推荐使用 IINA

  • @journey_ad 说道:
    macOS 推荐使用 IINA

    好的,谢谢!

Aby napisać komentarz, musisz się zalogować lub zarejestrować.