diff --git a/CHANGELOG.md b/CHANGELOG.md index 72f9c42d..08fe041c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # Changelog +## Unreleased + ## 1.18.2 - 2021-07-23 ### Additions - [bbc] add `gallery` and `programme` extractors ([#1706](https://github.com/mikf/gallery-dl/issues/1706)) diff --git a/gallery_dl/util.py b/gallery_dl/util.py index 34621385..2c0fae60 100644 --- a/gallery_dl/util.py +++ b/gallery_dl/util.py @@ -97,6 +97,17 @@ def generate_token(size=16): return binascii.hexlify(data).decode() +def format_value(value, unit="B", suffixes="kMGTPEZY"): + value = format(value) + value_len = len(value) + index = value_len - 4 + if index >= 0: + offset = (value_len - 1) % 3 + 1 + return (value[:offset] + "." + value[offset:offset+2] + + suffixes[index // 3] + unit) + return value + unit + + def combine_dict(a, b): """Recursively combine the contents of 'b' into 'a'""" for key, value in b.items(): diff --git a/gallery_dl/version.py b/gallery_dl/version.py index fbb4e5be..6e790462 100644 --- a/gallery_dl/version.py +++ b/gallery_dl/version.py @@ -6,4 +6,4 @@ # it under the terms of the GNU General Public License version 2 as # published by the Free Software Foundation. -__version__ = "1.18.2" +__version__ = "1.18.3-dev" diff --git a/test/test_util.py b/test/test_util.py index 2d574da8..7a31ebbd 100644 --- a/test/test_util.py +++ b/test/test_util.py @@ -532,6 +532,22 @@ class TestOther(unittest.TestCase): self.assertEqual(len(token), 80 * 2) self.assertRegex(token, r"^[0-9a-f]+$") + def test_format_value(self): + self.assertEqual(util.format_value(0) , "0B") + self.assertEqual(util.format_value(1) , "1B") + self.assertEqual(util.format_value(12) , "12B") + self.assertEqual(util.format_value(123) , "123B") + self.assertEqual(util.format_value(1234) , "1.23kB") + self.assertEqual(util.format_value(12345) , "12.34kB") + self.assertEqual(util.format_value(123456) , "123.45kB") + self.assertEqual(util.format_value(1234567) , "1.23MB") + self.assertEqual(util.format_value(12345678) , "12.34MB") + self.assertEqual(util.format_value(123456789) , "123.45MB") + self.assertEqual(util.format_value(1234567890), "1.23GB") + + self.assertEqual(util.format_value(123 , "B/s"), "123B/s") + self.assertEqual(util.format_value(123456, "B/s"), "123.45kB/s") + def test_combine_dict(self): self.assertEqual( util.combine_dict({}, {}),