aboutsummaryrefslogtreecommitdiffstats
path: root/yt_dlp
diff options
context:
space:
mode:
authorpukkandan <pukkandan.ytdlp@gmail.com>2022-01-19 18:11:27 +0530
committerpukkandan <pukkandan.ytdlp@gmail.com>2022-01-19 18:57:29 +0530
commit8bd1c00bf399ba7002fc21cd399c931e9d301bd8 (patch)
tree57371f2369d534ef9bb1219e114e6d5a13295f95 /yt_dlp
parent596379e26045e7ff250d18c03ea564b6c94ab007 (diff)
downloadhypervideo-pre-8bd1c00bf399ba7002fc21cd399c931e9d301bd8.tar.lz
hypervideo-pre-8bd1c00bf399ba7002fc21cd399c931e9d301bd8.tar.xz
hypervideo-pre-8bd1c00bf399ba7002fc21cd399c931e9d301bd8.zip
[utils] Handle `ss:xxx` in `parse_duration`
Closes #2388
Diffstat (limited to 'yt_dlp')
-rw-r--r--yt_dlp/utils.py11
1 files changed, 8 insertions, 3 deletions
diff --git a/yt_dlp/utils.py b/yt_dlp/utils.py
index b7e718028..7adfb1e74 100644
--- a/yt_dlp/utils.py
+++ b/yt_dlp/utils.py
@@ -4094,9 +4094,14 @@ def parse_duration(s):
return None
days, hours, mins, secs, ms = [None] * 5
- m = re.match(r'(?:(?:(?:(?P<days>[0-9]+):)?(?P<hours>[0-9]+):)?(?P<mins>[0-9]+):)?(?P<secs>[0-9]+)(?P<ms>\.[0-9]+)?Z?$', s)
+ m = re.match(r'''(?x)
+ (?P<before_secs>
+ (?:(?:(?P<days>[0-9]+):)?(?P<hours>[0-9]+):)?(?P<mins>[0-9]+):)?
+ (?P<secs>(?(before_secs)[0-9]{1,2}|[0-9]+))
+ (?P<ms>[.:][0-9]+)?Z?$
+ ''', s)
if m:
- days, hours, mins, secs, ms = m.groups()
+ days, hours, mins, secs, ms = m.group('days', 'hours', 'mins', 'secs', 'ms')
else:
m = re.match(
r'''(?ix)(?:P?
@@ -4141,7 +4146,7 @@ def parse_duration(s):
if days:
duration += float(days) * 24 * 60 * 60
if ms:
- duration += float(ms)
+ duration += float(ms.replace(':', '.'))
return duration