You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am trying to split subtiltes where there are two speakers that show up in the same frame. In my case this is indicated by newlines and hyphens ('\n-'). I this code snippet to split the subtitles into multiple:
# Split any multi-speaker subtitles (denoted by '\n-') into multiple single-speaker subtitles
for i in reversed(xrange(len(subs))):
if '\n-' in subs[i].text:
# Split the subtitle at the hyphen and format the list
lines = [line[1:] if line[0] == '-' else line for line in subs[i].text.split('\n-')]
length_milli = 1000 * float(subs[i].end.seconds - subs[i].start.seconds) + float(subs[i].end.milliseconds - subs[i].start.milliseconds)
interval_milli = int(length_milli / len(lines))
dummy = pysrt.SubRipItem(0, start=subs[i].start, end=subs[i].end, text="") # Use this just to get the right formatting for the time
dummy.shift(milliseconds =+ interval_milli) # Shift the dummy so its start time is now the end time we want
for j in xrange(len(lines)):
new_sub = pysrt.SubRipItem(0, start=subs[i].start, end=dummy.start, text=lines[j])
new_sub.shift(milliseconds =+ (j * interval_milli))
subs.append(new_sub)
del subs[i]
subs.clean_indexes()
The basic gist is that to format the time I am using a dummy object so that I can take advantage of shifting. For example, a 3-phrase frame over 3 seconds is split 3 ways would be 1 second long for each new frame.
When I create the dummy as above using start=sub.start and end=sub.end and then shift the dummy, it also shifts the original subtitle. I suspect this was not the intended behavior.
I found that casting sub.start and sub.end to strings in the assignment (e.g. start=str(sub.start)) solved the issue. It appears that without the cast, however, I am actually assigning a reference or pointer of some kind rather than the value of the string.
The text was updated successfully, but these errors were encountered:
I am trying to split subtiltes where there are two speakers that show up in the same frame. In my case this is indicated by newlines and hyphens ('\n-'). I this code snippet to split the subtitles into multiple:
The basic gist is that to format the time I am using a dummy object so that I can take advantage of shifting. For example, a 3-phrase frame over 3 seconds is split 3 ways would be 1 second long for each new frame.
When I create the dummy as above using
start=sub.start
andend=sub.end
and then shift the dummy, it also shifts the original subtitle. I suspect this was not the intended behavior.I found that casting
sub.start
andsub.end
to strings in the assignment (e.g.start=str(sub.start)
) solved the issue. It appears that without the cast, however, I am actually assigning a reference or pointer of some kind rather than the value of the string.The text was updated successfully, but these errors were encountered: