]> jfr.im git - yt-dlp.git/commitdiff
[utils] Improve `parse_count`
authorpukkandan <redacted>
Thu, 23 Dec 2021 21:32:50 +0000 (03:02 +0530)
committerpukkandan <redacted>
Fri, 24 Dec 2021 22:37:19 +0000 (04:07 +0530)
test/test_utils.py
yt_dlp/utils.py

index 22dda4f377cd2b345339f31627f1508b7d65e360..4edf4e1b1b677765865f109b4647a779d3a92be3 100644 (file)
@@ -1156,9 +1156,16 @@ def test_parse_count(self):
         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('1.1kk '), 1100000)
+        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 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), {})
index 2c5e6560a488cb3f9e8450be4f3ad1765f90f97d..cdc9a0ecf2fdc2ffe480904a7548d0f0026e94cd 100644 (file)
@@ -2211,7 +2211,7 @@ def parse_count(s):
     if s is None:
         return None
 
-    s = s.strip()
+    s = re.sub(r'^[^\d]+\s', '', s).strip()
 
     if re.match(r'^[\d,.]+$', s):
         return str_to_int(s)
@@ -2223,9 +2223,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
+
+    mobj = re.match(r'([\d,.]+)(?:$|\s)', s)
+    if mobj:
+        return str_to_int(mobj.group(1))
 
 
 def parse_resolution(s):