@@ -95,32 +95,22 @@ def translate_file(self,
95
95
files_info = {}
96
96
for fileobj in fileobjs :
97
97
file_name , file_ext = os .path .splitext (os .path .basename (fileobj ))
98
- if file_ext == ".srt" :
99
- parsed_dicts = parse_srt (file_path = fileobj )
100
- total_progress = len (parsed_dicts )
101
- for index , dic in enumerate (parsed_dicts ):
102
- progress (index / total_progress , desc = "Translating.." )
103
- translated_text = self .translate (dic ["sentence" ], max_length = max_length )
104
- dic ["sentence" ] = translated_text
105
- subtitle = get_serialized_srt (parsed_dicts )
106
-
107
- elif file_ext == ".vtt" :
108
- parsed_dicts = parse_vtt (file_path = fileobj )
109
- total_progress = len (parsed_dicts )
110
- for index , dic in enumerate (parsed_dicts ):
111
- progress (index / total_progress , desc = "Translating.." )
112
- translated_text = self .translate (dic ["sentence" ], max_length = max_length )
113
- dic ["sentence" ] = translated_text
114
- subtitle = get_serialized_vtt (parsed_dicts )
115
-
116
- if add_timestamp :
117
- timestamp = datetime .now ().strftime ("%m%d%H%M%S" )
118
- file_name += f"-{ timestamp } "
119
-
120
- output_path = os .path .join (self .output_dir , f"{ file_name } { file_ext } " )
121
- write_file (subtitle , output_path )
122
-
123
- files_info [file_name ] = {"subtitle" : subtitle , "path" : output_path }
98
+ writer = get_writer (file_ext , self .output_dir )
99
+ segments = writer .to_segments (fileobj )
100
+ for i , segment in enumerate (segments ):
101
+ progress (i / len (segments ), desc = "Translating.." )
102
+ translated_text = self .translate (segment .text , max_length = max_length )
103
+ segment .text = translated_text
104
+
105
+ subtitle , file_path = generate_file (
106
+ output_dir = self .output_dir ,
107
+ output_file_name = file_name ,
108
+ output_format = file_ext ,
109
+ result = segments ,
110
+ add_timestamp = add_timestamp
111
+ )
112
+
113
+ files_info [file_name ] = {"subtitle" : subtitle , "path" : file_path }
124
114
125
115
total_result = ''
126
116
for file_name , info in files_info .items ():
@@ -133,7 +123,8 @@ def translate_file(self,
133
123
return [gr_str , output_file_paths ]
134
124
135
125
except Exception as e :
136
- print (f"Error: { str (e )} " )
126
+ print (f"Error translating file: { e } " )
127
+ raise
137
128
finally :
138
129
self .release_cuda_memory ()
139
130
0 commit comments