diff --git a/test/test_utils.py b/test/test_utils.py index 9e28e008f..589a1c2bb 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -1196,18 +1196,15 @@ The first line srt_data = '''1 00:00:02,080 --> 00:00:05,839 default stylecustom style - -2 -00:00:02,080 --> 00:00:05,839 part 1 part 2 -3 +2 00:00:05,839 --> 00:00:09,560 line 3 part 3 -4 +3 00:00:09,560 --> 00:00:12,359 inner style diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index 62e769fd5..e4a446f0b 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -2859,6 +2859,10 @@ def dfxp2srt(dfxp_data): continue default_style.update(style) + last_begin_time = None + last_end_time = None + index_offset = 0 + for para, index in zip(paras, itertools.count(1)): begin_time = parse_dfxp_time_expr(para.attrib.get('begin')) end_time = parse_dfxp_time_expr(para.attrib.get('end')) @@ -2869,12 +2873,23 @@ def dfxp2srt(dfxp_data): if not dur: continue end_time = begin_time + dur - out.append('%d\n%s --> %s\n%s\n\n' % ( - index, - srt_subtitles_timecode(begin_time), - srt_subtitles_timecode(end_time), - parse_node(para))) + if begin_time == last_begin_time and end_time == last_end_time: + index_offset += 1 + out.append('%s\n' % (parse_node(para))) + else: + if out: + out.append('\n') + out.append('%d\n%s --> %s\n%s\n' % ( + index - index_offset, + srt_subtitles_timecode(begin_time), + srt_subtitles_timecode(end_time), + parse_node(para))) + + last_begin_time = begin_time + last_end_time = end_time + + out.append('\n') return ''.join(out)