@@ -152,110 +152,43 @@ def subs_generator(
152152 flag : str
153153 ) -> None :
154154 for i in range (strt_idx , end_idx ):
155- start = sbttls [i ].start / 1000
156- end = sbttls [i ].end / 1000
157- if flag == 'region' :
158- project .add_region (
159- start , end , sbttls [i ].text , (147 , 112 , 219 )
160- )
161- elif flag == 'item' :
162- item = project .tracks [1 ].add_item (start , end )
163- RPR .ULT_SetMediaItemNote (item .id , sbttls [i ].text )
164-
165-
166- def import_subs (subs : List [str ], project : reapy .Project , flag : str ) -> None :
167- sbttls = pysubs2 .load (subs [0 ])
168- mid = len (sbttls ) // 2
169- four = mid // 2
170- eight = four // 2
171- subs_gen_1 = (
172- mp .Process (
173- target = subs_generator ,
174- args = (
175- project , sbttls , 0 , eight ,
176- flag
177- )
178- )
179- )
180- subs_gen_2 = (
181- mp .Process (
182- target = subs_generator ,
183- args = (
184- project , sbttls , eight , four ,
185- flag
186- )
187- )
188- )
189- subs_gen_3 = (
190- mp .Process (
191- target = subs_generator ,
192- args = (
193- project , sbttls , four , (four + eight ),
194- flag
195- )
196- )
197- )
198- subs_gen_4 = (
199- mp .Process (
200- target = subs_generator ,
201- args = (
202- project , sbttls , (four + eight ), mid ,
203- flag
204- )
205- )
206- )
207- subs_gen_5 = (
208- mp .Process (
209- target = subs_generator ,
210- args = (
211- project , sbttls , mid , (mid + eight ),
212- flag
213- )
214- )
215- )
216- subs_gen_6 = (
217- mp .Process (
218- target = subs_generator ,
219- args = (
220- project , sbttls , (mid + eight ), (mid + four ),
221- flag
222- )
223- )
224- )
225- subs_gen_7 = (
226- mp .Process (
227- target = subs_generator ,
228- args = (
229- project , sbttls , (mid + four ), (mid + four + eight ),
230- flag
231- )
232- )
233- )
234- subs_gen_8 = (
235- mp .Process (
236- target = subs_generator ,
237- args = (
238- project , sbttls , (mid + four + eight ), len (sbttls ),
239- flag
155+ try :
156+ start = sbttls [i ].start / 1000
157+ end = sbttls [i ].end / 1000
158+ if flag == 'region' :
159+ project .add_region (
160+ start , end , sbttls [i ].text , (147 , 112 , 219 )
161+ )
162+ elif flag == 'item' :
163+ item = project .tracks [1 ].add_item (start , end )
164+ RPR .ULT_SetMediaItemNote (item .id , sbttls [i ].text )
165+ except IndexError :
166+ break
167+
168+
169+ def import_subs (
170+ sbttls : pysubs2 .SSAFile ,
171+ project : reapy .Project ,
172+ step : int ,
173+ flag : str ,
174+ strt_idx : int ,
175+ end_idx : int
176+ ) -> None :
177+ if strt_idx >= len (sbttls ):
178+ pass
179+ else :
180+ subs_gen = (
181+ mp .Process (
182+ target = subs_generator ,
183+ args = (
184+ project , sbttls , strt_idx , end_idx ,
185+ flag
186+ )
240187 )
241188 )
242- )
243- subs_gen_1 .start ()
244- subs_gen_2 .start ()
245- subs_gen_3 .start ()
246- subs_gen_4 .start ()
247- subs_gen_5 .start ()
248- subs_gen_6 .start ()
249- subs_gen_7 .start ()
250- subs_gen_8 .start ()
251- subs_gen_1 .join ()
252- subs_gen_2 .join ()
253- subs_gen_3 .join ()
254- subs_gen_4 .join ()
255- subs_gen_5 .join ()
256- subs_gen_6 .join ()
257- subs_gen_7 .join ()
258- subs_gen_8 .join ()
189+ subs_gen .start ()
190+ import_subs (sbttls , project , step , flag , end_idx , (end_idx + step ))
191+ subs_gen .join ()
259192
260193
261194def list_generator (
@@ -283,25 +216,27 @@ def list_generator(
283216
284217def fix_check (project : reapy .Project , subs : List [str ]) -> None :
285218 """Функция для проверки на пропуски и наложения"""
286- sbttls = pysubs2 .load (subs [0 ])
287- pattern = '- '
288219 dbbl_sbs = {}
289- subs_enum = len (sbttls )
220+ subs_list = []
221+ if subs :
222+ sbttls = pysubs2 .load (subs [0 ])
223+ pattern = '- '
224+ subs_enum = len (sbttls )
225+ subs_list = [[float ] * 2 ] * subs_enum
226+ position = 0
227+ for i , sub in enumerate (sbttls ):
228+ start = sub .start / 1000
229+ end = sub .end / 1000
230+ subs_list [position ] = [start , end ]
231+ if pattern in sub .text .lower ():
232+ dbbl_sbs [i ] = [(sub .start / 1000 ), (sub .end / 1000 ), 0 ]
233+ position += 1
290234 items_enum = project .n_items
291235 sub_items_enum = project .tracks [1 ].n_items
292236 voice_items = items_enum - sub_items_enum - 1
293237 items_mid = voice_items // 2
294- subs_list = [[float ] * 2 ] * subs_enum
295238 items_list_1 = [[float ] * 2 ] * items_mid
296239 items_list_2 = [[float ] * 2 ] * (voice_items - items_mid )
297- position = 0
298- for i , sub in enumerate (sbttls ):
299- start = sub .start / 1000
300- end = sub .end / 1000
301- subs_list [position ] = [start , end ]
302- if pattern in sub .text .lower ():
303- dbbl_sbs [i ] = [(sub .start / 1000 ), (sub .end / 1000 ), 0 ]
304- position += 1
305240 queue_1 = mp .Queue ()
306241 queue_2 = mp .Queue ()
307242 items_list_gen_1 = mp .Process (
@@ -363,7 +298,6 @@ def fix_check(project: reapy.Project, subs: List[str]) -> None:
363298 if s not in checked_subs :
364299 project .add_marker (s [0 ], 'FIX' , (255 , 0 , 255 ))
365300 for s in dbbl_sbs :
366- lenght = dbbl_sbs [s ][1 ] - dbbl_sbs [s ][0 ]
367301 for i in items_list :
368302 middle = i [0 ] + ((i [1 ] - i [0 ]) / 2 )
369303 if i [0 ] >= dbbl_sbs [s ][0 ] and i [1 ] <= dbbl_sbs [s ][1 ]:
@@ -373,11 +307,13 @@ def fix_check(project: reapy.Project, subs: List[str]) -> None:
373307 elif i [0 ] < dbbl_sbs [s ][0 ] and (
374308 i [1 ] > dbbl_sbs [s ][0 ] and i [1 ] < dbbl_sbs [s ][1 ]
375309 ):
376- dbbl_sbs [s ][2 ] += 1
310+ if dbbl_sbs [s ][0 ] < middle < dbbl_sbs [s ][1 ]:
311+ dbbl_sbs [s ][2 ] += 1
377312 elif i [0 ] > dbbl_sbs [s ][0 ] and (
378313 i [0 ] < dbbl_sbs [s ][1 ] and i [1 ] > dbbl_sbs [s ][1 ]
379314 ):
380- dbbl_sbs [s ][2 ] += 1
315+ if dbbl_sbs [s ][0 ] < middle < dbbl_sbs [s ][1 ]:
316+ dbbl_sbs [s ][2 ] += 1
381317 for s in dbbl_sbs :
382318 if dbbl_sbs [s ][2 ] < 2 :
383319 project .add_marker (dbbl_sbs [s ][0 ], 'DUBBLE HERE' , (255 , 255 , 0 ))
@@ -482,12 +418,16 @@ def reaper_main(
482418 audio_select (audio )
483419 RPR .InsertMedia (video [0 ], 512 | 0 )
484420 project .save (False )
421+ if subs :
422+ sbttls = pysubs2 .load (subs [0 ])
423+ step = len (sbttls ) // 8
424+ strt_idx , end_idx = 0 , step
425+ if get_option ('sub_region' ):
426+ import_subs (sbttls , project , step , 'region' , strt_idx , end_idx )
427+ if get_option ('sub_item' ):
428+ import_subs (sbttls , project , step , 'item' , strt_idx , end_idx )
485429 if get_option ('split' ):
486430 split (project )
487- if subs and (get_option ('sub_region' )):
488- import_subs (subs , project , 'region' )
489- if subs and get_option ('sub_item' ):
490- import_subs (subs , project , 'item' )
491431 project .save (False )
492432 hidden_normalize (project )
493433 back_up (project , new_path )
0 commit comments