[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
	 Sergey M․
					Sergey M․