fix: the sync command must use the text stream's previous entry as a reference

This commit is contained in:
Emmanuel BENOîT 2025-04-08 14:37:59 +02:00
parent 1c52044f9c
commit ff58ed554a
Signed by: Emmanuel BENOîT
SSH key fingerprint: SHA256:l7PFUUF5TCDsvYeQC9OnTNz08dFY7Fvf4Hv3neIqYpg

View file

@ -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,