mirror of
				https://github.com/ytdl-org/youtube-dl
				synced 2025-11-04 03:33:46 +00:00 
			
		
		
		
	[utils] Add parse_resolution
This commit is contained in:
		
							parent
							
								
									44dc11db61
								
							
						
					
					
						commit
						b871d7e954
					
				@ -53,6 +53,7 @@ from youtube_dl.utils import (
 | 
				
			|||||||
    parse_filesize,
 | 
					    parse_filesize,
 | 
				
			||||||
    parse_count,
 | 
					    parse_count,
 | 
				
			||||||
    parse_iso8601,
 | 
					    parse_iso8601,
 | 
				
			||||||
 | 
					    parse_resolution,
 | 
				
			||||||
    pkcs1pad,
 | 
					    pkcs1pad,
 | 
				
			||||||
    read_batch_urls,
 | 
					    read_batch_urls,
 | 
				
			||||||
    sanitize_filename,
 | 
					    sanitize_filename,
 | 
				
			||||||
@ -982,6 +983,16 @@ class TestUtil(unittest.TestCase):
 | 
				
			|||||||
        self.assertEqual(parse_count('1.1kk '), 1100000)
 | 
					        self.assertEqual(parse_count('1.1kk '), 1100000)
 | 
				
			||||||
        self.assertEqual(parse_count('1.1kk views'), 1100000)
 | 
					        self.assertEqual(parse_count('1.1kk views'), 1100000)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_parse_resolution(self):
 | 
				
			||||||
 | 
					        self.assertEqual(parse_resolution(None), {})
 | 
				
			||||||
 | 
					        self.assertEqual(parse_resolution(''), {})
 | 
				
			||||||
 | 
					        self.assertEqual(parse_resolution('1920x1080'), {'width': 1920, 'height': 1080})
 | 
				
			||||||
 | 
					        self.assertEqual(parse_resolution('1920×1080'), {'width': 1920, 'height': 1080})
 | 
				
			||||||
 | 
					        self.assertEqual(parse_resolution('1920 x 1080'), {'width': 1920, 'height': 1080})
 | 
				
			||||||
 | 
					        self.assertEqual(parse_resolution('720p'), {'height': 720})
 | 
				
			||||||
 | 
					        self.assertEqual(parse_resolution('4k'), {'height': 2160})
 | 
				
			||||||
 | 
					        self.assertEqual(parse_resolution('8K'), {'height': 4320})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_version_tuple(self):
 | 
					    def test_version_tuple(self):
 | 
				
			||||||
        self.assertEqual(version_tuple('1'), (1,))
 | 
					        self.assertEqual(version_tuple('1'), (1,))
 | 
				
			||||||
        self.assertEqual(version_tuple('10.23.344'), (10, 23, 344))
 | 
					        self.assertEqual(version_tuple('10.23.344'), (10, 23, 344))
 | 
				
			||||||
 | 
				
			|||||||
@ -1689,6 +1689,28 @@ def parse_count(s):
 | 
				
			|||||||
    return lookup_unit_table(_UNIT_TABLE, s)
 | 
					    return lookup_unit_table(_UNIT_TABLE, s)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def parse_resolution(s):
 | 
				
			||||||
 | 
					    if s is None:
 | 
				
			||||||
 | 
					        return {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    mobj = re.search(r'\b(?P<w>\d+)\s*[xX×]\s*(?P<h>\d+)\b', s)
 | 
				
			||||||
 | 
					    if mobj:
 | 
				
			||||||
 | 
					        return {
 | 
				
			||||||
 | 
					            'width': int(mobj.group('w')),
 | 
				
			||||||
 | 
					            'height': int(mobj.group('h')),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    mobj = re.search(r'\b(\d+)[pPiI]\b', s)
 | 
				
			||||||
 | 
					    if mobj:
 | 
				
			||||||
 | 
					        return {'height': int(mobj.group(1))}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    mobj = re.search(r'\b([48])[kK]\b', s)
 | 
				
			||||||
 | 
					    if mobj:
 | 
				
			||||||
 | 
					        return {'height': int(mobj.group(1)) * 540}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def month_by_name(name, lang='en'):
 | 
					def month_by_name(name, lang='en'):
 | 
				
			||||||
    """ Return the number of a month by (locale-independently) English name """
 | 
					    """ Return the number of a month by (locale-independently) English name """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user