mirror of
https://github.com/ytdl-org/youtube-dl
synced 2024-06-09 23:36:00 +09:00
[utils] Improve parse_count() with single regex, based on yt-dlp 352d5da81219e2675ef8cac9383ab0dfbd161a19
This commit is contained in:
parent
f5f1908275
commit
0205fea833
|
@ -1272,9 +1272,16 @@ class TestUtil(unittest.TestCase):
|
|||
self.assertEqual(parse_count('1000'), 1000)
|
||||
self.assertEqual(parse_count('1.000'), 1000)
|
||||
self.assertEqual(parse_count('1.1k'), 1100)
|
||||
self.assertEqual(parse_count('1.1 k'), 1100)
|
||||
self.assertEqual(parse_count('1,1 k'), 1100)
|
||||
self.assertEqual(parse_count('1,1kk'), 1100000)
|
||||
self.assertEqual(parse_count('100 views'), 100)
|
||||
self.assertEqual(parse_count('1,100 views'), 1100)
|
||||
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('10M views'), 10000000)
|
||||
self.assertEqual(parse_count('has 10M views'), 10000000)
|
||||
|
||||
def test_parse_resolution(self):
|
||||
self.assertEqual(parse_resolution(None), {})
|
||||
|
|
|
@ -3746,10 +3746,11 @@ def parse_count(s):
|
|||
if s is None:
|
||||
return None
|
||||
|
||||
s = s.strip()
|
||||
|
||||
if re.match(r'^[\d,.]+$', s):
|
||||
return str_to_int(s)
|
||||
m = re.match(r'^(?:[^\d]+\s+)?(?P<val>(?P<num>[\d,.]+)(?P<rest>[\w\s]+?)?)(?:\s|\s*$)', s)
|
||||
if m:
|
||||
if not m.group('rest'):
|
||||
return str_to_int(m.group('num'))
|
||||
s = m.group('val')
|
||||
|
||||
_UNIT_TABLE = {
|
||||
'k': 1000,
|
||||
|
@ -3758,9 +3759,17 @@ def parse_count(s):
|
|||
'M': 1000 ** 2,
|
||||
'kk': 1000 ** 2,
|
||||
'KK': 1000 ** 2,
|
||||
'b': 1000 ** 3,
|
||||
'B': 1000 ** 3,
|
||||
}
|
||||
|
||||
return lookup_unit_table(_UNIT_TABLE, s)
|
||||
ret = lookup_unit_table(_UNIT_TABLE, s)
|
||||
if ret is not None:
|
||||
return ret
|
||||
|
||||
s = m and m.group('num')
|
||||
if s is not None:
|
||||
return str_to_int(s)
|
||||
|
||||
|
||||
def parse_resolution(s):
|
||||
|
|
Loading…
Reference in New Issue
Block a user