Files
2025-linux-tg-utility/utils.py
Nikita Tyukalov, ASUS, Linux 40385167e3 Initial commit
2025-11-22 23:39:39 +03:00

72 lines
1.7 KiB
Python

''' Utilities '''
import os
import time
import glob
import shutil
import hashlib
import mimetypes
import traceback
def pex() -> None:
''' Print last exception '''
traceback.print_exc()
def ensure_dir(path: str) -> bool:
''' Ensure directory existance.
'path' must NOT have trailing slash!
'''
try:
os.makedirs(path, exist_ok=True)
return True
except:
return False
def get_script_dir() -> str:
''' Returns path of this script (utils.py) '''
return os.path.dirname(os.path.abspath(__file__))
def get_all_mods() -> list[str]:
''' Get list of all supported mods '''
sd = get_script_dir()
res = [f for f in os.listdir(sd) if os.path.isfile(os.path.join(sd, f))]
res = [f.split('.')[0] for f in res if f.startswith('mod_') and f.endswith('.py')]
return res
def get_md5(data: str) -> str:
''' Returns MD5 for data '''
md5_hash = hashlib.md5()
md5_hash.update(str(data).encode('ascii'))
return md5_hash.hexdigest()
def get_unique_md5() -> str:
''' Returns unique MD5 '''
md5_hash = hashlib.md5()
md5_hash.update(str(time.time()).encode('ascii'))
return md5_hash.hexdigest()
def which(cmd: str) -> str:
''' Analogue to UNIX which '''
return shutil.which(cmd)
def get_mime(ext) -> str:
''' ext must not start with dot '''
try:
mime_type, _ = mimetypes.guess_type('file.%s' % ext)
return mime_type
except:
return 'video/%s' % ext
def rm_glob(path_glob: str) -> None:
''' Delete files using glob (files only) '''
try:
files = glob.glob(path_glob)
for f in files:
try:
os.remove(f)
except:
pass
except:
pass