fix: the sync command must use the text stream's previous entry as a reference
This commit is contained in:
parent
1c52044f9c
commit
ff58ed554a
1 changed files with 6 additions and 6 deletions
12
merge_srt.py
12
merge_srt.py
|
@ -133,7 +133,7 @@ class SRTMerger:
|
|||
return None
|
||||
text_index = int(parts[2])
|
||||
time_index = int(parts[3])
|
||||
if text_index < 1 or time_index < 2:
|
||||
if text_index < 2 or time_index < 1:
|
||||
return None
|
||||
except (ValueError, AttributeError, TypeError):
|
||||
return None
|
||||
|
@ -195,15 +195,15 @@ class SRTMerger:
|
|||
time_list = self.srt2 if text_source == 1 else self.srt1
|
||||
text_start_idx = text_index - 1
|
||||
time_start_idx = time_index - 1
|
||||
prev_time_idx = time_start_idx - 1
|
||||
prev_text_idx = text_start_idx - 1
|
||||
if (text_start_idx < 0 or text_start_idx >= len(text_list) or
|
||||
time_start_idx < 1 or prev_time_idx < 0 or time_start_idx >= len(time_list)):
|
||||
self.errors.append(f"Invalid SYNC command: text index {text_index} must be >=1 and <= {len(text_list)}, time index {time_index} must be >=2 and <= {len(time_list)}.")
|
||||
time_start_idx < 1 or prev_text_idx < 0 or time_start_idx >= len(time_list)):
|
||||
self.errors.append(f"Invalid SYNC command: text index {text_index} must be >=2 and <= {len(text_list)}, time index {time_index} must be >=1 and <= {len(time_list)}.")
|
||||
return
|
||||
text_entry = text_list[text_start_idx]
|
||||
time_entry = time_list[time_start_idx]
|
||||
prev_time_entry = time_list[prev_time_idx]
|
||||
delta = self.compute_delta(prev_time_entry['timestamp'], time_entry['timestamp'])
|
||||
prev_time_entry = time_list[prev_text_idx]
|
||||
delta = self.compute_delta(prev_time_entry['timestamp'], text_entry['timestamp'])
|
||||
new_ts = self.add_delta_to_timestamp(time_entry['timestamp'], delta)
|
||||
self.output.append({
|
||||
'timestamp': new_ts,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue