28 lines
797 B
Python
28 lines
797 B
Python
# @File : utils.py
|
|
# @Time : 2026/04/21 17:24:21
|
|
# @Author : SilverAg.L
|
|
|
|
def shorten_name(filename: str, flag: int = 1):
|
|
stem, ext = filename.rsplit('.', 1) if '.' in filename else (filename, '')
|
|
stem = stem.replace(' ', '').upper()
|
|
ext = ext[:3].upper()
|
|
bstem = stem.encode(errors='ignore')
|
|
for i in range(8, 0, -1):
|
|
try:
|
|
cut = bstem[:i].decode()
|
|
if cut != stem:
|
|
cut += f'~{flag}'
|
|
stem = cut
|
|
break
|
|
except UnicodeDecodeError:
|
|
continue
|
|
return f'{stem}.{ext}' if ext else stem
|
|
|
|
|
|
def format_size(bytes: int) -> str:
|
|
for unit in ['B', 'KB', 'MB', 'GB', 'TB']:
|
|
if bytes < 1024:
|
|
return f"{bytes:.2f} {unit}"
|
|
bytes /= 1024
|
|
return f"{bytes:.2f} PB"
|