File size: 2,754 Bytes
cb9970a
 
3e6a3ef
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cb9970a
3e6a3ef
cb9970a
3e6a3ef
cb9970a
3e6a3ef
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cb9970a
3e6a3ef
 
 
 
 
 
 
 
cb9970a
 
 
3e6a3ef
 
 
cb9970a
3e6a3ef
cb9970a
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<!DOCTYPE html>
<html>
	<head>
      <!-- <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto&display=swap" > -->
      <style>
          body {
              font-family: 'Roboto', sans-serif;
              font-size: 16px; 
          }
        .logo {
            height: 1em;
            vertical-align: middle;
            margin-bottom: 0.1em; 
          }
      </style>
      
		<script type="module" crossorigin src="https://cdn.jsdelivr.net/npm/@gradio/lite@0.4.1/dist/lite.js"></script>
		<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@gradio/lite@0.4.1/dist/lite.css" />
	</head>
	<body>
      <h2>
        <!-- <img src="lite-logo.png" alt="logo" class="logo"> -->
        Gradio-lite (Gradio running entirely in your browser!)
      </h2>
      <p>Try it out! Once the Gradio app loads (can take 10-15 seconds), disconnect your Wifi and the machine learning model will still work!</p>
<gradio-lite>

<gradio-file name="app.py" entrypoint>
import gradio as gr
from tempfile import NamedTemporaryFile

def translate_subtitles(english_srt, translated_json):
    with open(english_srt, 'r', encoding='utf-8') as file:
        english_subtitles = file.read().strip().split('\n\n')
    
    with open(translated_json, 'r', encoding='utf-8') as file:
        translated_texts = eval(file.read())
    # 将上传的JSON文件内容转化为字典    
    # 确保翻译文本的数量与SRT文件中的条目数量相同
    assert len(translated_texts) == len(english_subtitles)
    
    # 用来存储最终翻译的SRT内容
    translated_srt_content = []
    
    # 遍历SRT文件中的每个条目,并用翻译后的文本替换原文本
    for index, block in enumerate(english_subtitles):
        lines = block.split('\n')
        translated_srt_content.append(lines[0])  # 序号
        translated_srt_content.append(lines[1])  # 时间轴
        translated_srt_content.append(translated_texts[index])  # 翻译文本
        translated_srt_content.append('')  # 添加空行作为字幕块的分隔
    
    # 将列表转换为字符串,每个元素之间以换行符连接
    translated_srt_string = '\n'.join(translated_srt_content)
    with NamedTemporaryFile(delete=False, suffix='.srt', mode='w', encoding='utf-8') as tmp_file:
        tmp_file.write(translated_srt_string)
        return tmp_file.name  # 返回文件路径以便下载

# 创建Gradio接
iface = gr.Interface(
    fn=translate_subtitles, 
    inputs=[
        gr.File(label="Upload English SRT File"), 
        gr.File(label="Upload Translated Texts JSON File")
    ], 
    outputs=gr.File(label="Download Translated SRT File")

)

# 启动Gradio界面
iface.launch()
</gradio-file>

</gradio-lite>		
    </body>
</html>