|
SIZE_UNITS = ["B", "KB", "MB", "GB", "TB", "PB"] |
|
|
|
|
|
def get_readable_file_size(size_in_bytes) -> str: |
|
if size_in_bytes is None: |
|
return "0B" |
|
index = 0 |
|
while size_in_bytes >= 1024: |
|
size_in_bytes /= 1024 |
|
index += 1 |
|
try: |
|
return f"{round(size_in_bytes, 2)}{SIZE_UNITS[index]}" |
|
except IndexError: |
|
return "File too large" |
|
|
|
|
|
def get_readable_time(seconds: int) -> str: |
|
result = "" |
|
(days, remainder) = divmod(seconds, 86400) |
|
days = int(days) |
|
if days != 0: |
|
result += f"{days}d " |
|
(hours, remainder) = divmod(remainder, 3600) |
|
hours = int(hours) |
|
if hours != 0: |
|
result += f"{hours}h " |
|
(minutes, seconds) = divmod(remainder, 60) |
|
minutes = int(minutes) |
|
if minutes != 0: |
|
result += f"{minutes}m " |
|
seconds = int(seconds) |
|
result += f"{seconds}s " |
|
return result |
|
|
|
|
|
def get_readable_bitrate(bitrate_kbps): |
|
return ( |
|
f"{str(round(bitrate_kbps / 1000, 2))} Mb/s" |
|
if bitrate_kbps > 10000 |
|
else f"{str(round(bitrate_kbps, 2))} kb/s" |
|
) |
|
|
|
|
|
def get_readable_time2(seconds: int) -> str: |
|
count = 0 |
|
ping_time = "" |
|
time_list = [] |
|
time_suffix_list = ["s", "m", "h", "d", "w", "m", "y"] |
|
while count < 4: |
|
count += 1 |
|
remainder, result = divmod(seconds, 60) if count < 3 else divmod(seconds, 24) |
|
if seconds == 0 and remainder == 0: |
|
break |
|
time_list.append(int(result)) |
|
seconds = int(remainder) |
|
for i in range(len(time_list)): |
|
time_list[i] = str(time_list[i]) + time_suffix_list[i] |
|
if len(time_list) == 4: |
|
ping_time += f"{time_list.pop()}, " |
|
time_list.reverse() |
|
ping_time += ":".join(time_list) |
|
return ping_time |
|
|