mirror of
				https://gitlab.com/ytdl-org/youtube-dl.git
				synced 2025-11-03 20:07:08 -05:00 
			
		
		
		
	[utils] Improve parse_duration
This commit is contained in:
		@@ -211,6 +211,9 @@ class TestUtil(unittest.TestCase):
 | 
				
			|||||||
        self.assertEqual(parse_duration('00:01:01'), 61)
 | 
					        self.assertEqual(parse_duration('00:01:01'), 61)
 | 
				
			||||||
        self.assertEqual(parse_duration('x:y'), None)
 | 
					        self.assertEqual(parse_duration('x:y'), None)
 | 
				
			||||||
        self.assertEqual(parse_duration('3h11m53s'), 11513)
 | 
					        self.assertEqual(parse_duration('3h11m53s'), 11513)
 | 
				
			||||||
 | 
					        self.assertEqual(parse_duration('3h 11m 53s'), 11513)
 | 
				
			||||||
 | 
					        self.assertEqual(parse_duration('3 hours 11 minutes 53 seconds'), 11513)
 | 
				
			||||||
 | 
					        self.assertEqual(parse_duration('3 hours 11 mins 53 secs'), 11513)
 | 
				
			||||||
        self.assertEqual(parse_duration('62m45s'), 3765)
 | 
					        self.assertEqual(parse_duration('62m45s'), 3765)
 | 
				
			||||||
        self.assertEqual(parse_duration('6m59s'), 419)
 | 
					        self.assertEqual(parse_duration('6m59s'), 419)
 | 
				
			||||||
        self.assertEqual(parse_duration('49s'), 49)
 | 
					        self.assertEqual(parse_duration('49s'), 49)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1332,8 +1332,10 @@ def parse_duration(s):
 | 
				
			|||||||
    if s is None:
 | 
					    if s is None:
 | 
				
			||||||
        return None
 | 
					        return None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    s = s.strip()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    m = re.match(
 | 
					    m = re.match(
 | 
				
			||||||
        r'(?:(?:(?P<hours>[0-9]+)[:h])?(?P<mins>[0-9]+)[:m])?(?P<secs>[0-9]+)s?(?::[0-9]+)?(?P<ms>\.[0-9]+)?$', s)
 | 
					        r'(?:(?:(?P<hours>[0-9]+)\s*(?:[:h]|hours?)\s*)?(?P<mins>[0-9]+)\s*(?:[:m]|mins?|minutes?)\s*)?(?P<secs>[0-9]+)(?P<ms>\.[0-9]+)?\s*(?:s|secs?|seconds?)?$', s)
 | 
				
			||||||
    if not m:
 | 
					    if not m:
 | 
				
			||||||
        return None
 | 
					        return None
 | 
				
			||||||
    res = int(m.group('secs'))
 | 
					    res = int(m.group('secs'))
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user