mirror of
https://github.com/ytdl-org/youtube-dl.git
synced 2024-11-25 11:41:52 +00:00
[utils] Add parse_resolution
This commit is contained in:
parent
44dc11db61
commit
b871d7e954
2 changed files with 33 additions and 0 deletions
|
@ -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…
Reference in a new issue