diff options
author | Yen Chi Hsuan <yan12125@gmail.com> | 2015-12-19 18:21:42 +0800 |
---|---|---|
committer | Yen Chi Hsuan <yan12125@gmail.com> | 2015-12-19 18:21:42 +0800 |
commit | d631d5f9f27f93767226192e4288990413fa9dbd (patch) | |
tree | 055755c210c91b43d2491087764560c2f9c0ab39 /youtube_dl | |
parent | 4f29fa99069760dc47ef9ca5dbf607a567d2982f (diff) |
[utils] Fix TTML conversion
Tolerate invalid timestamps (closes #7909)
Diffstat (limited to 'youtube_dl')
-rw-r--r-- | youtube_dl/utils.py | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index 91917fc96..ee20c3d9b 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -1976,7 +1976,7 @@ def match_filter_func(filter_str): def parse_dfxp_time_expr(time_expr): if not time_expr: - return 0.0 + return mobj = re.match(r'^(?P<time_offset>\d+(?:\.\d+)?)s?$', time_expr) if mobj: @@ -2020,10 +2020,15 @@ def dfxp2srt(dfxp_data): raise ValueError('Invalid dfxp/TTML subtitle') for para, index in zip(paras, itertools.count(1)): - begin_time = parse_dfxp_time_expr(para.attrib['begin']) + begin_time = parse_dfxp_time_expr(para.attrib.get('begin')) end_time = parse_dfxp_time_expr(para.attrib.get('end')) + dur = parse_dfxp_time_expr(para.attrib.get('dur')) + if begin_time is None: + continue if not end_time: - end_time = begin_time + parse_dfxp_time_expr(para.attrib['dur']) + 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), |