mirror of
				https://gitlab.com/ytdl-org/youtube-dl.git
				synced 2025-11-04 00:57:07 -05:00 
			
		
		
		
	[utils] Improve parse_duration
This commit is contained in:
		@@ -510,6 +510,7 @@ class TestUtil(unittest.TestCase):
 | 
			
		||||
        self.assertEqual(parse_duration('1 hour 3 minutes'), 3780)
 | 
			
		||||
        self.assertEqual(parse_duration('87 Min.'), 5220)
 | 
			
		||||
        self.assertEqual(parse_duration('PT1H0.040S'), 3600.04)
 | 
			
		||||
        self.assertEqual(parse_duration('PT00H03M30SZ'), 210)
 | 
			
		||||
 | 
			
		||||
    def test_fix_xml_ampersands(self):
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
 
 | 
			
		||||
@@ -1773,7 +1773,7 @@ def parse_duration(s):
 | 
			
		||||
    s = s.strip()
 | 
			
		||||
 | 
			
		||||
    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]+)?$', s)
 | 
			
		||||
    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)
 | 
			
		||||
    if m:
 | 
			
		||||
        days, hours, mins, secs, ms = m.groups()
 | 
			
		||||
    else:
 | 
			
		||||
@@ -1790,11 +1790,11 @@ def parse_duration(s):
 | 
			
		||||
                )?
 | 
			
		||||
                (?:
 | 
			
		||||
                    (?P<secs>[0-9]+)(?P<ms>\.[0-9]+)?\s*s(?:ec(?:ond)?s?)?\s*
 | 
			
		||||
                )?$''', s)
 | 
			
		||||
                )?Z?$''', s)
 | 
			
		||||
        if m:
 | 
			
		||||
            days, hours, mins, secs, ms = m.groups()
 | 
			
		||||
        else:
 | 
			
		||||
            m = re.match(r'(?i)(?:(?P<hours>[0-9.]+)\s*(?:hours?)|(?P<mins>[0-9.]+)\s*(?:mins?\.?|minutes?)\s*)$', s)
 | 
			
		||||
            m = re.match(r'(?i)(?:(?P<hours>[0-9.]+)\s*(?:hours?)|(?P<mins>[0-9.]+)\s*(?:mins?\.?|minutes?)\s*)Z?$', s)
 | 
			
		||||
            if m:
 | 
			
		||||
                hours, mins = m.groups()
 | 
			
		||||
            else:
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user